-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathstart_worker.sh
executable file
·34 lines (34 loc) · 1.88 KB
/
start_worker.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
# Ensures that the main process runs as the DSA_USER and is part of both that
# group and the docker group. Fail if DSA_USER is not specified.
if [[ -z "$DSA_USER" ]]; then
echo "Set the DSA_USER before starting (e.g, DSA_USER=\$$(id -u):\$$(id -g) <up command>"
exit 1
fi
# add a user with the DSA_USER's id; this user is named ubuntu if it doesn't
# exist.
adduser --uid ${DSA_USER%%:*} --disabled-password --gecos "" ubuntu 2>/dev/null
# add a group with the DSA_USER's group id.
addgroup --gid ${DSA_USER#*:} $(id -ng ${DSA_USER#*:}) 2>/dev/null
# add the user to the user group.
adduser $(id -nu ${DSA_USER%%:*}) $(getent group ${DSA_USER#*:} | cut "-d:" -f1) 2>/dev/null
# add a group with the docker group id.
addgroup --gid $(stat -c "%g" /var/run/docker.sock) docker 2>/dev/null
# add the user to the docker group.
adduser $(id -nu ${DSA_USER%%:*}) $(getent group $(stat -c "%g" /var/run/docker.sock) | cut "-d:" -f1) 2>/dev/null
# Try to increase permissions for the docker socket; this helps this work on
# OSX where the users don't translate
chmod 777 /var/run/docker.sock 2>/dev/null || true
chmod 777 ${TMPDIR:-/tmp} || true
echo ==== Pre-Provisioning ===
python3 /opt/digital_slide_archive/devops/dsa/provision.py --worker-pre
echo ==== Provisioning === &&
python3 /opt/digital_slide_archive/devops/dsa/provision.py --worker-main
echo ==== Starting Worker === &&
# Run subsequent commands as the DSA_USER. This sets some paths based on what
# is expected in the Docker so that the current python environment and the
# devops/dsa/utils are available. Then it runs girder_worker
su $(id -nu ${DSA_USER%%:*}) -c "
PATH=\"/opt/digital_slide_archive/devops/dsa/utils:/opt/venv/bin:/.pyenv/bin:/.pyenv/shims:$PATH\";
DOCKER_CLIENT_TIMEOUT=86400 TMPDIR=${TMPDIR:-/tmp} GW_DIRECT_PATHS=true python -m girder_worker --concurrency=${DSA_WORKER_CONCURRENCY:-2} -Ofair --prefetch-multiplier=1
"