From 5ad0b1f13b6c6472e3e36942deda2d72883dff2e Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Sat, 16 Nov 2019 20:06:50 +0100
Subject: [PATCH] [Docker] Place all data under one volume.

Eases deployment, especially on hosters that charge per volume.
---
 Dockerfile              | 14 ++++++--------
 docker/entrypoint.sh    |  8 ++++----
 docker/nginx/Dockerfile |  2 +-
 docker/nginx/nginx.conf |  4 ++--
 4 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index d8ae20629..231af405a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,8 +8,9 @@ ENV PIP_DISABLE_PIP_VERSION_CHECK 1
 ENV PIP_NO_CACHE_DIR 1
 
 # Configure app settings for build and runtime
-ENV BISCUIT_static__root /srv/static
-ENV BISCUIT_media__root /srv/media
+ENV BISCUIT_static__root /var/lib/biscuit/static
+ENV BISCUIT_media__root /var/lib/biscuit/media
+ENV BISCUIT_backup__location /var/lib/biscuit/backups
 
 # FIXME Use poetry pre-release for external build
 ENV POETRY_VERSION 1.0.0b3
@@ -36,7 +37,7 @@ RUN pip install "poetry==$POETRY_VERSION"; \
 # Install core
 COPY biscuit ./biscuit/
 COPY LICENSE README.md manage.py ./
-RUN mkdir /etc/biscuit /srv/media /srv/static /var/backups/biscuit; \
+RUN mkdir -p /var/lib/biscuit/media /var/lib/biscuit/static /var/lib/biscuit/backups; \
     poetry build && pip install dist/*.whl
 
 # Build messages and assets
@@ -54,11 +55,8 @@ RUN apt-get remove --purge -y \
     apt-get clean -y; \
     rm -f /var/lib/apt/lists/*_*
 
-# Mark configuration as mountableg from the host
-VOLUME /etc/biscuit
-VOLUME /srv/media
-VOLUME /srv/static
-VOLUME /var/backups/biscuit
+# Declare a persistent volume for all data
+VOLUME /var/lib/biscuit
 
 # Define entrypoint and gunicorn running on port 8000
 EXPOSE 8000
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index 0c0de294f..4dcf89fce 100755
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -6,11 +6,11 @@ export BISCUIT_database__host=${BISCUIT_database__host:-127.0.0.1}
 export BISCUIT_database__port=${BISCUIT_database__port:-5432}
 
 if [[ -z $BISCUIT_secret_key ]]; then
-    if [[ ! -e /etc/biscuit/secret_key ]]; then
-	touch /etc/biscuit/secret_key; chmod 600 /etc/biscuit/secret_key
-	LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 64 >/etc/biscuit/secret_key
+    if [[ ! -e /var/lib/biscuit/secret_key ]]; then
+	touch /var/lib/biscuit/secret_key; chmod 600 /var/lib/biscuit/secret_key
+	LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 64 >/var/lib/biscuit/secret_key
     fi
-    BISCUIT_secret_key=$(</etc/biscuit/secret_key)
+    BISCUIT_secret_key=$(</var/lib/biscuit/secret_key)
 fi
 
 while ! nc -z $BISCUIT_database__host $BISCUIT_database__port; do
diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile
index a44009fab..9645e8f00 100644
--- a/docker/nginx/Dockerfile
+++ b/docker/nginx/Dockerfile
@@ -6,4 +6,4 @@ COPY nginx.conf /etc/nginx/conf.d
 RUN apt-get update && apt-get upgrade -y
 RUN apt-get install -y libjs-bootstrap4 fonts-font-awesome libjs-jquery libjs-popper.js libjs-jquery-datatables
 
-RUN mkdir /srv/media /srv/static
+RUN mkdir /var/lib/biscuit
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
index 1dd3bf2a1..41f0bc39e 100644
--- a/docker/nginx/nginx.conf
+++ b/docker/nginx/nginx.conf
@@ -13,11 +13,11 @@ server {
     }
 
     location /media/ {
-        alias /srv/media/;
+        alias /var/lib/biscuit/media/;
     }
 
     location /static/ {
-        alias /srv/static/;
+        alias /var/lib/biscuit/static/;
     }
 
     location /javascript/ {
-- 
GitLab