aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author0livd <github@destras.fr>2018-02-07 09:37:21 +0100
committerAlexis Metaireau <alexis@notmyidea.org>2018-02-07 09:37:21 +0100
commitd9471733f82f948e4e77ac91d6280fa5c4856358 (patch)
tree13f6e8c7703759f38f7f9d39fcec3100f9fb11f5
parent667e555d6726f1e27e8e5cdcfb79981b413571e9 (diff)
downloadihatemoney-mirror-d9471733f82f948e4e77ac91d6280fa5c4856358.zip
ihatemoney-mirror-d9471733f82f948e4e77ac91d6280fa5c4856358.tar.gz
ihatemoney-mirror-d9471733f82f948e4e77ac91d6280fa5c4856358.tar.bz2
Fix some anti patterns in docker deployment (#321)
- Use exec to run gunicorn and avoid creating a new process. - Add the possibility to pass any additional parameters to gunicorn. - Use only one gunicorn worker by default as the usual way to scale the app in production would be to use the scale command of the cluster scheduler. Additional workers could still be added by passing the "-w" gunicorn parameter to docker run.
-rw-r--r--Dockerfile5
-rwxr-xr-xconf/confandrun.sh9
-rw-r--r--docs/installation.rst5
3 files changed, 10 insertions, 9 deletions
diff --git a/Dockerfile b/Dockerfile
index ba2752a..feb423d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -26,9 +26,8 @@ ENV DEBUG="False" \
ACTIVATE_DEMO_PROJECT="True" \
ADMIN_PASSWORD="" \
ALLOW_PUBLIC_PROJECT_CREATION="True" \
- ACTIVATE_ADMIN_DASHBOARD="False" \
- GUNICORN_NUM_WORKERS="3"
+ ACTIVATE_ADMIN_DASHBOARD="False"
VOLUME /database
EXPOSE 8000
-CMD ["/ihatemoney/conf/confandrun.sh"]
+ENTRYPOINT ["/ihatemoney/conf/confandrun.sh"]
diff --git a/conf/confandrun.sh b/conf/confandrun.sh
index e76a8e8..e37a573 100755
--- a/conf/confandrun.sh
+++ b/conf/confandrun.sh
@@ -17,7 +17,8 @@ ADMIN_PASSWORD = "$ADMIN_PASSWORD"
ALLOW_PUBLIC_PROJECT_CREATION = $ALLOW_PUBLIC_PROJECT_CREATION
ACTIVATE_ADMIN_DASHBOARD = $ACTIVATE_ADMIN_DASHBOARD
EOF
-gunicorn ihatemoney.wsgi:application \
--b 0.0.0.0:8000 \
---log-syslog \
--w "$GUNICORN_NUM_WORKERS"
+# Start gunicorn without forking
+exec gunicorn ihatemoney.wsgi:application \
+ -b 0.0.0.0:8000 \
+ --log-syslog \
+ "$@"
diff --git a/docs/installation.rst b/docs/installation.rst
index 0c3cfac..e7d586e 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -154,9 +154,10 @@ A volume can also be specified to persist the default database file::
docker run -d -p 8000:8000 -v /host/path/to/database:/database ihatemoney
-The following gunicorn parameters are also available::
+Additional gunicorn parameters can be passed using the docker ``CMD`` parameter.
+For example, use the following command to add more gunicorn workers::
- GUNICORN_NUM_WORKERS (default: 3)
+ docker run -d -p 8000:8000 ihatemoney -w 3
Configuration
=============