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