43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Wordt bij elke containerstart uitgevoerd, vóór gunicorn.
|
|
set -e
|
|
|
|
# De container start als root, zodat we de rechten op de gedeelde volumes
|
|
# (static + media) goed kunnen zetten — ook als die ooit als root zijn
|
|
# aangemaakt (anders: 'Permission denied' bij het uploaden van bv. een logo).
|
|
# Daarna draaien migraties, collectstatic én gunicorn als 'appuser'.
|
|
RUN_AS=""
|
|
if [ "$(id -u)" = "0" ]; then
|
|
mkdir -p /app/media/pictogrammen /app/media/huisstijl /app/staticfiles
|
|
chown -R appuser:appuser /app/media /app/staticfiles || true
|
|
RUN_AS="gosu appuser"
|
|
fi
|
|
|
|
# Wacht tot PostgreSQL bereikbaar is (alleen als we Postgres gebruiken).
|
|
if [ -n "$POSTGRES_DB" ]; then
|
|
echo "Wachten op PostgreSQL op ${POSTGRES_HOST:-db}:${POSTGRES_PORT:-5432}..."
|
|
python <<'PY'
|
|
import os, time, socket
|
|
host = os.environ.get("POSTGRES_HOST", "db")
|
|
port = int(os.environ.get("POSTGRES_PORT", "5432"))
|
|
for _ in range(60):
|
|
try:
|
|
with socket.create_connection((host, port), timeout=2):
|
|
print("Database is bereikbaar.")
|
|
break
|
|
except OSError:
|
|
time.sleep(1)
|
|
else:
|
|
raise SystemExit("Database niet bereikbaar na 60s.")
|
|
PY
|
|
fi
|
|
|
|
# Migraties uitvoeren en statische bestanden verzamelen (als appuser).
|
|
echo "Migraties uitvoeren..."
|
|
$RUN_AS python manage.py migrate --noinput
|
|
|
|
echo "Statische bestanden verzamelen..."
|
|
$RUN_AS python manage.py collectstatic --noinput
|
|
|
|
# Geef door aan het CMD (gunicorn), als appuser.
|
|
exec $RUN_AS "$@"
|