47 lines
2.1 KiB
Bash
47 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
pg_data=/app/local/postgres-aio17
|
|
redis_data=/app/local/redis-aio
|
|
pg_bin="$(pg_config --bindir)"
|
|
fresh_database=0
|
|
|
|
mkdir -p "$pg_data" "$redis_data" /app/media /app/logs /tmp/celery
|
|
chown -R postgres:postgres "$pg_data"
|
|
chown -R redis:redis "$redis_data"
|
|
chown -R app:app /app/media /app/logs /tmp/celery
|
|
|
|
if [[ ! -s "$pg_data/PG_VERSION" ]]; then
|
|
runuser -u postgres -- "$pg_bin/initdb" -D "$pg_data" --auth-local=trust --auth-host=scram-sha-256
|
|
fresh_database=1
|
|
fi
|
|
|
|
runuser -u postgres -- "$pg_bin/pg_ctl" -D "$pg_data" -o "-c listen_addresses=127.0.0.1" -w start
|
|
db_name="${POSTGRES_DB:-vacatureradar}"
|
|
db_user="${POSTGRES_USER:-vacatureradar}"
|
|
db_password="${POSTGRES_PASSWORD:?POSTGRES_PASSWORD ontbreekt}"
|
|
export DATABASE_URL="postgresql://${db_user}:${db_password}@127.0.0.1:5432/${db_name}"
|
|
export POSTGRES_HOST=127.0.0.1
|
|
export REDIS_URL=redis://127.0.0.1:6379/0
|
|
|
|
runuser -u postgres -- psql --set=ON_ERROR_STOP=1 --set=db_name="$db_name" --set=db_user="$db_user" --set=db_password="$db_password" postgres <<'SQL'
|
|
SELECT format('CREATE ROLE %I LOGIN PASSWORD %L', :'db_user', :'db_password')
|
|
WHERE NOT EXISTS (SELECT FROM pg_roles WHERE rolname = :'db_user') \gexec
|
|
SELECT format('ALTER ROLE %I PASSWORD %L', :'db_user', :'db_password') \gexec
|
|
SELECT format('CREATE DATABASE %I OWNER %I', :'db_name', :'db_user')
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = :'db_name') \gexec
|
|
SQL
|
|
if [[ "$fresh_database" == "1" && -n "${VACATURERADAR_RESTORE_DUMP:-}" && -s "${VACATURERADAR_RESTORE_DUMP}" ]]; then
|
|
runuser -u postgres -- pg_restore --no-owner --role="$db_user" --dbname="$db_name" "${VACATURERADAR_RESTORE_DUMP}"
|
|
fi
|
|
runuser -u postgres -- "$pg_bin/pg_ctl" -D "$pg_data" -m fast -w stop
|
|
|
|
runuser -u postgres -- "$pg_bin/pg_ctl" -D "$pg_data" -o "-c listen_addresses=127.0.0.1" -w start
|
|
runuser -u app -- python manage.py migrate --noinput
|
|
if [[ "${VACATURERADAR_AUTO_BOOTSTRAP:-0}" == "1" ]]; then
|
|
runuser -u app -- python manage.py bootstrap_instance || true
|
|
fi
|
|
runuser -u postgres -- "$pg_bin/pg_ctl" -D "$pg_data" -m fast -w stop
|
|
|
|
exec /usr/bin/supervisord -c /app/deployment/unraid/supervisord.conf
|