mirror of
https://github.com/tubearchivist/tubearchivist
synced 2024-11-02 09:41:07 +00:00
69 lines
2.0 KiB
Bash
69 lines
2.0 KiB
Bash
#!/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
|