#!/bin/bash # startup script inside the container for tubearchivist if [[ -z "$ELASTIC_USER" ]]; then export ELASTIC_USER=elastic fi cachedir=/cache [[ -d $cachedir ]] || cachedir=. lockfile=${cachedir}/initsu.lock required="Missing required environment variable" [[ -f $lockfile ]] || : "${TA_USERNAME:?$required}" : "${TA_PASSWORD:?$required}" : "${ELASTIC_PASSWORD:?$required}" : "${TA_HOST:?$required}" # ugly nginx and uwsgi port overwrite with env vars if [[ -n "$TA_PORT" ]]; then sed -i "s/8000/$TA_PORT/g" /etc/nginx/sites-available/default fi if [[ -n "$TA_UWSGI_PORT" ]]; then sed -i "s/8080/$TA_UWSGI_PORT/g" /etc/nginx/sites-available/default sed -i "s/8080/$TA_UWSGI_PORT/g" /app/uwsgi.ini fi # wait for elasticsearch counter=0 until curl -u "$ELASTIC_USER":"$ELASTIC_PASSWORD" "$ES_URL" -fs; do echo "waiting for elastic search to start" counter=$((counter+1)) if [[ $counter -eq 12 ]]; then # fail after 2 min echo "failed to connect to elastic search, exiting..." curl -v -u "$ELASTIC_USER":"$ELASTIC_PASSWORD" "$ES_URL"?pretty exit 1 fi sleep 10 done # start python application python manage.py makemigrations python manage.py migrate if [[ -f $lockfile ]]; then echo -e "\e[33;1m[WARNING]\e[0m This is not the first run! Skipping" \ "superuser creation.\nTo force it, remove $lockfile" else export DJANGO_SUPERUSER_PASSWORD=$TA_PASSWORD output="$(python manage.py createsuperuser --noinput --name "$TA_USERNAME" 2>&1)" case "$output" in *"Superuser created successfully"*) echo "$output" && touch $lockfile ;; *"That name is already taken."*) echo "Superuser already exists. Creation will be skipped on next start." touch $lockfile ;; *) echo "$output" && exit 1 esac fi python manage.py collectstatic --noinput -c nginx & celery -A home.tasks worker --loglevel=INFO & celery -A home beat --loglevel=INFO \ -s "${BEAT_SCHEDULE_PATH:-${cachedir}/celerybeat-schedule}" & uwsgi --ini uwsgi.ini