From f89de16f6e953d5d868f4f1515b828848fb5301d Mon Sep 17 00:00:00 2001
From: Jan Dittberner <jan@dittberner.info>
Date: Mon, 20 Feb 2023 15:39:14 +0100
Subject: [PATCH] Improve docker build

- add .dockerignore
- add entrypoint.sh to ensure proper permissions in Docker volumes
- add TZ variable for consistent Celery timestamps
---
 .dockerignore               | 18 ++++++++++++++++++
 Dockerfile                  | 14 ++++++--------
 docker-compose.yml          | 17 +++++++++--------
 docker/django_media/.empty  |  0
 docker/django_static/.empty |  0
 entrypoint.sh               |  7 +++++++
 gva.sh                      |  5 +++--
 7 files changed, 43 insertions(+), 18 deletions(-)
 create mode 100644 .dockerignore
 delete mode 100644 docker/django_media/.empty
 delete mode 100644 docker/django_static/.empty
 create mode 100755 entrypoint.sh

diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..652558d
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,18 @@
+**/*.pyc
+**/.*.swp
+**/.coverage
+**/__pycache__
+.dockerignore
+.env
+.envrc
+.git
+.gitignore
+.idea
+.isort.cfg
+.vagrant
+Dockerfile
+Vagrantfile
+docker-compose.yml
+docs
+media
+static
diff --git a/Dockerfile b/Dockerfile
index 1cd97eb..93b979c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -51,22 +51,20 @@ ARG GVAAPP=gva
 ARG GVAGID=2000
 ARG GVAUID=2000
 
-VOLUME /srv/$GVAAPP/media /srv/$GVAAPP/static
-
-WORKDIR /srv/$GVAAPP
-
 RUN addgroup --gid $GVAGID $GVAAPP ; \
     adduser --home /home/$GVAAPP --shell /bin/bash --uid $GVAUID --gid $GVAGID --disabled-password \
             --gecos "User for gnuviechadmin component $GVAAPP" $GVAAPP
 
 COPY --chown=$GVAAPP:$GVAAPP --from=builder /srv/$GVAAPP/.venv /srv/$GVAAPP/.venv
 
-USER $GVAAPP
+WORKDIR /srv/$GVAAPP
 
-VOLUME /srv/$GVAAPP
+VOLUME /srv/$GVAAPP/media /srv/$GVAAPP/static
+
+VOLUME /srv/$GVAAPP/gnuviechadmin
 
 EXPOSE 8000
 
-COPY ${GVAAPP}.sh /srv/
+COPY ${GVAAPP}.sh entrypoint.sh /srv/
 
-ENTRYPOINT ["dumb-init", "/srv/${GVAAPP}.sh"]
+ENTRYPOINT ["dumb-init", "/srv/entrypoint.sh"]
diff --git a/docker-compose.yml b/docker-compose.yml
index dd174b0..4e611c1 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,3 +1,4 @@
+---
 version: "3"
 services:
   db:
@@ -36,9 +37,9 @@ services:
       GVA_DOMAIN_NAME: localhost
       GVA_SITE_NAME: localhost
     volumes:
-      - "./docker/django_media:/srv/gva/media"
-      - "./docker/django_static:/srv/gva/static"
-      - ".:/srv/gva"
+      - "django_media:/srv/gva/media"
+      - "django_static:/srv/gva/static"
+      - "./gnuviechadmin:/srv/gva/gnuviechadmin"
   web:
     image: gnuviech/gvaweb:buster
     build:
@@ -51,7 +52,7 @@ services:
       - redis
     env_file: ../gvaweb/.env
     volumes:
-      - "../gvaweb:/srv/gvaweb"
+      - "../gvaweb/gvaweb:/srv/gvaweb/gvaweb"
   ldap:
     image: gnuviech/gvaldap:buster
     build:
@@ -64,7 +65,7 @@ services:
       - redis
     env_file: ../gvaldap/.env
     volumes:
-      - "../gvaldap:/srv/gvaldap"
+      - "../gvaldap/gvaldap:/srv/gvaldap/gvaldap"
   file:
     image: gnuviech/gvafile:buster
     build:
@@ -77,7 +78,7 @@ services:
       - redis
     env_file: ../gvafile/.env
     volumes:
-      - "../gvafile:/srv/gvafile"
+      - "../gvafile/gvafile:/srv/gvafile/gvafile"
   pgsql:
     image: gnuviech/gvapgsql:buster
     build:
@@ -90,7 +91,7 @@ services:
       - redis
     env_file: ../gvapgsql/.env
     volumes:
-      - "../gvapgsql:/srv/gvapgsql"
+      - "../gvapgsql/gvapgsql:/srv/gvapgsql/gvapgsql"
   mysql:
     image: gnuviech/gvamysql:buster
     build:
@@ -103,7 +104,7 @@ services:
       - redis
     env_file: ../gvamysql/.env
     volumes:
-      - "../gvamysql:/srv/gvamysql"
+      - "../gvamysql/gvamysql:/srv/gvamysql/gvamysql"
 volumes:
   django_media:
   django_static:
diff --git a/docker/django_media/.empty b/docker/django_media/.empty
deleted file mode 100644
index e69de29..0000000
diff --git a/docker/django_static/.empty b/docker/django_static/.empty
deleted file mode 100644
index e69de29..0000000
diff --git a/entrypoint.sh b/entrypoint.sh
new file mode 100755
index 0000000..b8e2187
--- /dev/null
+++ b/entrypoint.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+chown -Rc gva.gva /srv/gva/media /srv/gva/static
+
+su -c /srv/gva.sh gva
diff --git a/gva.sh b/gva.sh
index 2314974..f8c0ce4 100755
--- a/gva.sh
+++ b/gva.sh
@@ -14,11 +14,12 @@ do
   sleep 1
 done
 
-echo " db is ready"
+echo ". db is ready"
+
+export TZ="Europe/Berlin"
 
 . /srv/gva/.venv/bin/activate
 cd /srv/gva/gnuviechadmin
-python3 manage.py compilemessages
 python3 manage.py collectstatic --noinput
 python3 manage.py migrate --noinput
 python3 manage.py runserver 0.0.0.0:8000