diff --git a/docker-startup.sh b/docker-startup.sh index ff6debf3225a4ef7aead7dbe31e18d94ba698fbc..1bd65240b64f49d4a3cb3145b653b2f3567f0e01 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 "$@" ;;