From b07b0833f064aed63e76d6fa57701f85b00002eb Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Thu, 18 Mar 2021 23:41:19 +0100
Subject: [PATCH] [Docker] Refactor startup script into functions

---
 docker-startup.sh | 81 ++++++++++++++++++++++++-----------------------
 1 file changed, 42 insertions(+), 39 deletions(-)

diff --git a/docker-startup.sh b/docker-startup.sh
index ff6debf32..1bd65240b 100755
--- a/docker-startup.sh
+++ b/docker-startup.sh
@@ -4,6 +4,35 @@ RUN_MODE=${RUN_MODE:-uwsgi}
 HTTP_PORT=${HTTP_PORT:-8000}
 PREPARE=${PREPARE:-1}
 
+wait_migrations() {
+    echo -n "Waiting for migrations to appear"
+    while ! aleksis-admin migrate --check >/dev/null 2>&1; do
+	sleep 0.5
+	echo -n .
+    done
+    echo
+}
+
+wait_database() {
+    echo -n "Waiting for database."
+    while ! aleksis-admin dbshell -- -c "SELECT 1" >/dev/null 2>&1; do
+	sleep 0.5
+	echo -n .
+    done
+    echo
+}
+
+prepare_static() {
+    aleksis-admin compilescss
+    aleksis-admin collectstatic --no-input --clear
+}
+
+prepare_database() {
+    aleksis-admin migrate
+    aleksis-admin createinitialrevisions
+}
+
+
 if [[ -z $ALEKSIS_secret_key ]]; then
     if [[ ! -e /var/lib/aleksis/secret_key ]]; then
 	touch /var/lib/aleksis/secret_key; chmod 600 /var/lib/aleksis/secret_key
@@ -12,58 +41,32 @@ if [[ -z $ALEKSIS_secret_key ]]; then
     ALEKSIS_secret_key=$(</var/lib/aleksis/secret_key)
 fi
 
-echo -n "Waiting for database."
-while ! aleksis-admin dbshell -- -c "SELECT 1" >/dev/null 2>&1; do
-    sleep 0.5
-    echo -n .
-done
-echo
-
-if [[ $PREPARE = 1 ]]; then
-    aleksis-admin compilescss
-    aleksis-admin collectstatic --no-input --clear
-fi
+wait_database
 
 case "$RUN_MODE" in
     uwsgi)
 	if [[ $PREPARE = 1 ]]; then
-		aleksis-admin migrate
-	        aleksis-admin createinitialrevisions
+	    prepare_database
+	    prepare_static
 	else
-	    while ! aleksis-admin migrate --check; do
-		sleep 0.5
-	    done
+	    wait_migrations
 	fi
-	aleksis-admin compilescss
-	aleksis-admin collectstatic --no-input --clear
+
 	exec aleksis-admin runuwsgi -- --http-socket=:$HTTP_PORT
         ;;
-    celery-worker)
+    celery-*)
     	if [[ $PREPARE = 1 ]]; then
-		aleksis-admin migrate
-		aleksis-admin createinitialrevisions
+	    prepare_database
 	else
-	    while ! aleksis-admin migrate --check; do
-		sleep 0.5
-	    done
+	    wait_migrations
 	fi
-	exec celery -A aleksis.core worker
-	;;
-    celery-beat)
-    	if [[ $PREPARE = 1 ]]; then
-		aleksis-admin migrate
-	else
-	    while ! aleksis-admin migrate --check; do
-		sleep 0.5
-	    done
-	fi
-	exec celery -A aleksis.core beat
+
+	exec celery -A aleksis.core ${RUN_MODE#celery-}
 	;;
     prepare)
-	aleksis-admin compilescss
-	aleksis-admin collectstatic --no-input --clear
-	aleksis-admin migrate
-	aleksis-admin createinitialrevisions
+	prepare_database
+	prepare_static
+	;;
     *)
 	exec "$@"
 	;;
-- 
GitLab