This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
pg_data=/app/local/postgres-aio17
|
||||
redis_data=/app/local/redis-aio
|
||||
pg_bin="$(dirname "$(readlink -f "$(command -v pg_config)")")"
|
||||
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
|
||||
@@ -83,7 +83,12 @@ def validate_yaml_contracts() -> None:
|
||||
compose = parse_yaml(relative)
|
||||
if not isinstance(compose, dict) or not isinstance(compose.get("services"), dict):
|
||||
raise ValidationError(f"Composebestand mist services: {relative}")
|
||||
for service in ("web", "worker", "scheduler", "postgres", "redis"):
|
||||
required_services = (
|
||||
("app",)
|
||||
if relative == "docker-compose.unraid.yml"
|
||||
else ("web", "worker", "scheduler", "postgres", "redis")
|
||||
)
|
||||
for service in required_services:
|
||||
if service not in compose["services"]:
|
||||
raise ValidationError(f"{relative} mist service {service}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user