From e980b2c25537e4a040be2af9b37598cad32d095b Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 4 Nov 2020 09:47:48 +0100 Subject: [PATCH] Allow to run nginx+gunicorn in Docker container --- Dockerfile | 7 ++- deployment/docker/pretix.bash | 10 ++--- deployment/docker/supervisord.all.conf | 2 + deployment/docker/supervisord.conf | 44 ------------------- deployment/docker/supervisord.web.conf | 2 + deployment/docker/supervisord/base.conf | 18 ++++++++ deployment/docker/supervisord/nginx.conf | 7 +++ deployment/docker/supervisord/pretixtask.conf | 6 +++ deployment/docker/supervisord/pretixweb.conf | 7 +++ 9 files changed, 52 insertions(+), 51 deletions(-) create mode 100644 deployment/docker/supervisord.all.conf delete mode 100644 deployment/docker/supervisord.conf create mode 100644 deployment/docker/supervisord.web.conf create mode 100644 deployment/docker/supervisord/base.conf create mode 100644 deployment/docker/supervisord/nginx.conf create mode 100644 deployment/docker/supervisord/pretixtask.conf create mode 100644 deployment/docker/supervisord/pretixweb.conf diff --git a/Dockerfile b/Dockerfile index 738a9a6b5b..cd57590a83 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,8 @@ RUN apt-get update && \ mkdir /data && \ useradd -ms /bin/bash -d /pretix -u 15371 pretixuser && \ echo 'pretixuser ALL=(ALL) NOPASSWD:SETENV: /usr/bin/supervisord' >> /etc/sudoers && \ - mkdir /static + mkdir /static && \ + mkdir /etc/supervisord ENV LC_ALL=C.UTF-8 \ DJANGO_SETTINGS_MODULE=production_settings @@ -52,7 +53,9 @@ RUN pip3 install -U \ rm -rf ~/.cache/pip COPY deployment/docker/pretix.bash /usr/local/bin/pretix -COPY deployment/docker/supervisord.conf /etc/supervisord.conf +COPY deployment/docker/supervisord /etc/supervisord +COPY deployment/docker/supervisord.all.conf /etc/supervisord.all.conf +COPY deployment/docker/supervisord.web.conf /etc/supervisord.web.conf COPY deployment/docker/nginx.conf /etc/nginx/nginx.conf COPY deployment/docker/production_settings.py /pretix/src/production_settings.py COPY src /pretix/src diff --git a/deployment/docker/pretix.bash b/deployment/docker/pretix.bash index 47ca5e7eae..86b4e2f9fa 100644 --- a/deployment/docker/pretix.bash +++ b/deployment/docker/pretix.bash @@ -19,7 +19,11 @@ fi python3 -m pretix migrate --noinput if [ "$1" == "all" ]; then - exec sudo -E /usr/bin/supervisord -n -c /etc/supervisord.conf + exec sudo -E /usr/bin/supervisord -n -c /etc/supervisord.all.conf +fi + +if [ "$1" == "web" ]; then + exec sudo -E /usr/bin/supervisord -n -c /etc/supervisord.web.conf fi if [ "$1" == "webworker" ]; then @@ -37,10 +41,6 @@ if [ "$1" == "taskworker" ]; then exec celery -A pretix.celery_app worker -l info "$@" fi -if [ "$1" == "shell" ]; then - exec python3 -m pretix shell -fi - if [ "$1" == "upgrade" ]; then exec python3 -m pretix updatestyles fi diff --git a/deployment/docker/supervisord.all.conf b/deployment/docker/supervisord.all.conf new file mode 100644 index 0000000000..8ce2ef5832 --- /dev/null +++ b/deployment/docker/supervisord.all.conf @@ -0,0 +1,2 @@ +[include] +files = /etc/supervisord/*.conf diff --git a/deployment/docker/supervisord.conf b/deployment/docker/supervisord.conf deleted file mode 100644 index c348fd9677..0000000000 --- a/deployment/docker/supervisord.conf +++ /dev/null @@ -1,44 +0,0 @@ -[unix_http_server] -file=/tmp/supervisor.sock - -[supervisord] -logfile=/tmp/supervisord.log -logfile_maxbytes=50MB -logfile_backups=10 -loglevel=info -pidfile=/tmp/supervisord.pid -nodaemon=false -minfds=1024 -minprocs=200 - -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl=unix:///tmp/supervisor.sock - -[program:pretixweb] -command=/usr/local/bin/pretix webworker -autostart=true -autorestart=true -priority=5 -user=pretixuser -environment=HOME=/pretix - -[program:pretixtask] -command=/usr/local/bin/pretix taskworker -autostart=true -autorestart=true -priority=5 -user=pretixuser - -[program:nginx] -command=/usr/sbin/nginx -autostart=true -autorestart=true -priority=10 -stdout_events_enabled=true -stderr_events_enabled=true - -[include] -files = /etc/supervisord-*.conf diff --git a/deployment/docker/supervisord.web.conf b/deployment/docker/supervisord.web.conf new file mode 100644 index 0000000000..eed79b11b3 --- /dev/null +++ b/deployment/docker/supervisord.web.conf @@ -0,0 +1,2 @@ +[include] +files = /etc/supervisord/base.conf /etc/supervisord/nginx.conf /etc/supervisord/pretixweb.conf diff --git a/deployment/docker/supervisord/base.conf b/deployment/docker/supervisord/base.conf new file mode 100644 index 0000000000..86daf761d6 --- /dev/null +++ b/deployment/docker/supervisord/base.conf @@ -0,0 +1,18 @@ +[unix_http_server] +file=/tmp/supervisor.sock + +[supervisord] +logfile=/tmp/supervisord.log +logfile_maxbytes=50MB +logfile_backups=10 +loglevel=info +pidfile=/tmp/supervisord.pid +nodaemon=false +minfds=1024 +minprocs=200 + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock diff --git a/deployment/docker/supervisord/nginx.conf b/deployment/docker/supervisord/nginx.conf new file mode 100644 index 0000000000..8262eab6d3 --- /dev/null +++ b/deployment/docker/supervisord/nginx.conf @@ -0,0 +1,7 @@ +[program:nginx] +command=/usr/sbin/nginx +autostart=true +autorestart=true +priority=10 +stdout_events_enabled=true +stderr_events_enabled=true diff --git a/deployment/docker/supervisord/pretixtask.conf b/deployment/docker/supervisord/pretixtask.conf new file mode 100644 index 0000000000..59fe266198 --- /dev/null +++ b/deployment/docker/supervisord/pretixtask.conf @@ -0,0 +1,6 @@ +[program:pretixtask] +command=/usr/local/bin/pretix taskworker +autostart=true +autorestart=true +priority=5 +user=pretixuser diff --git a/deployment/docker/supervisord/pretixweb.conf b/deployment/docker/supervisord/pretixweb.conf new file mode 100644 index 0000000000..498df76378 --- /dev/null +++ b/deployment/docker/supervisord/pretixweb.conf @@ -0,0 +1,7 @@ +[program:pretixweb] +command=/usr/local/bin/pretix webworker +autostart=true +autorestart=true +priority=5 +user=pretixuser +environment=HOME=/pretix