From 9da841efc3b2db895b18c6b1ec047a906c73a413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 2 Jun 2017 10:54:46 +0200 Subject: [PATCH] Added Celery worker docker container This docker container uses the Blender Cloud image, but a different entry point. It is not intended to be network-reachable from the outside world. All it needs are connections to the databases (mongo, redis, rabbit). --- docker/4_run/bash_history | 3 +++ docker/4_run/celery-worker.sh | 4 ++++ docker/4_run/docker-entrypoint.sh | 18 +----------------- docker/4_run/install_scripts.sh | 18 ++++++++++++++++++ docker/4_run/run.docker | 3 +-- docker/docker-compose.yml | 18 +++++++++++++++++- 6 files changed, 44 insertions(+), 20 deletions(-) create mode 100755 docker/4_run/celery-worker.sh create mode 100644 docker/4_run/install_scripts.sh diff --git a/docker/4_run/bash_history b/docker/4_run/bash_history index a48a50c..23c282b 100644 --- a/docker/4_run/bash_history +++ b/docker/4_run/bash_history @@ -2,5 +2,8 @@ bash docker-entrypoint.sh env | sort apache2ctl start apache2ctl graceful +/manage.sh operations worker -- -C +celery status --broker amqp://guest:guest@rabbit:5672// +celery events --broker amqp://guest:guest@rabbit:5672// tail -n 40 -f /var/log/apache2/access.log tail -n 40 -f /var/log/apache2/error.log diff --git a/docker/4_run/celery-worker.sh b/docker/4_run/celery-worker.sh new file mode 100755 index 0000000..e5f259c --- /dev/null +++ b/docker/4_run/celery-worker.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +source /install_scripts.sh +source /manage.sh operations worker -- -C diff --git a/docker/4_run/docker-entrypoint.sh b/docker/4_run/docker-entrypoint.sh index a2e6bc0..9a9fb7f 100755 --- a/docker/4_run/docker-entrypoint.sh +++ b/docker/4_run/docker-entrypoint.sh @@ -1,22 +1,6 @@ #!/usr/bin/env bash -if [ ! -f /installed ]; then - SITEPKG=$(echo /opt/python/lib/python3.*/site-packages) - echo "Installing Blender Cloud packages into $SITEPKG" - - # TODO: 'pip3 install -e' runs 'setup.py develop', which runs 'setup.py egg_info', - # which can't write the egg info to the read-only /data/git volume. This is why - # we manually install the links. - for SUBPROJ in /data/git/{pillar,pillar-python-sdk,attract,flamenco}; do - NAME=$(python3 $SUBPROJ/setup.py --name) - echo "... $NAME" - echo $SUBPROJ >> $SITEPKG/easy-install.pth - echo $SUBPROJ > $SITEPKG/$NAME.egg-link - done - echo "All packages installed." - - touch /installed -fi +source /install_scripts.sh # Make sure that log rotation works. mkdir -p ${APACHE_LOG_DIR} diff --git a/docker/4_run/install_scripts.sh b/docker/4_run/install_scripts.sh new file mode 100644 index 0000000..622341f --- /dev/null +++ b/docker/4_run/install_scripts.sh @@ -0,0 +1,18 @@ + +if [ ! -f /installed ]; then + SITEPKG=$(echo /opt/python/lib/python3.*/site-packages) + echo "Installing Blender Cloud packages into $SITEPKG" + + # TODO: 'pip3 install -e' runs 'setup.py develop', which runs 'setup.py egg_info', + # which can't write the egg info to the read-only /data/git volume. This is why + # we manually install the links. + for SUBPROJ in /data/git/{pillar,pillar-python-sdk,attract,flamenco}; do + NAME=$(python3 $SUBPROJ/setup.py --name) + echo "... $NAME" + echo $SUBPROJ >> $SITEPKG/easy-install.pth + echo $SUBPROJ > $SITEPKG/$NAME.egg-link + done + echo "All packages installed." + + touch /installed +fi diff --git a/docker/4_run/run.docker b/docker/4_run/run.docker index 7cb95d8..cd71bfb 100755 --- a/docker/4_run/run.docker +++ b/docker/4_run/run.docker @@ -42,8 +42,7 @@ RUN a2enmod rewrite && a2enmod wsgi-py36 ADD apache2.conf /etc/apache2/apache2.conf ADD 000-default.conf /etc/apache2/sites-available/000-default.conf -ADD docker-entrypoint.sh /docker-entrypoint.sh -ADD manage.sh /manage.sh +ADD *.sh / # Remove some empty top-level directories we won't use anyway. RUN rmdir /media /home 2>/dev/null || true diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index f45ddfa..d2b969d 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -14,7 +14,7 @@ redis: ports: - "127.0.0.1:6379:6379" rabbit: - image: rabbitmq:3.6.7 + image: rabbitmq:3.6.10 container_name: rabbit restart: always ports: @@ -36,6 +36,22 @@ blender_cloud: links: - mongo - redis + - rabbit +celery_worker: + image: armadillica/blender_cloud:latest + entrypoint: /celery-worker.sh + container_name: celery_worker + restart: always + volumes: + # format: HOST:CONTAINER + - /data/git:/data/git:ro + - /data/config:/data/config:ro + - /data/storage/pillar:/data/storage/pillar + - /data/log:/var/log + links: + - mongo + - redis + - rabbit # notifserv: # container_name: notifserv # image: armadillica/pillar-notifserv:cd8fa678436563ac3b800b2721e36830c32e4656