Fall back to an unhashed logo URL if ManifestStaticFilesStorage misses, and run collectstatic in the worker entrypoint.
52 lines
1.1 KiB
Bash
Executable File
52 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cd /app/site
|
|
|
|
wait_for_database() {
|
|
if [[ -z "${DATABASE_URL:-}" && -z "${DB_HOST:-}" ]]; then
|
|
return 0
|
|
fi
|
|
|
|
echo "Waiting for database..."
|
|
for _ in $(seq 1 30); do
|
|
if uv run python - <<'PY'
|
|
import os
|
|
import sys
|
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "monica_site.settings")
|
|
|
|
import django
|
|
from django.db import connections
|
|
from django.db.utils import OperationalError
|
|
|
|
django.setup()
|
|
|
|
try:
|
|
connections["default"].ensure_connection()
|
|
except OperationalError:
|
|
sys.exit(1)
|
|
PY
|
|
then
|
|
echo "Database is ready."
|
|
return 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
echo "Database did not become ready in time." >&2
|
|
exit 1
|
|
}
|
|
|
|
wait_for_database
|
|
|
|
uv run python manage.py migrate --noinput
|
|
|
|
# Email branding (and anything else that resolves static URLs) needs the
|
|
# ManifestStaticFilesStorage map. Web entrypoint already collectstatics;
|
|
# worker must too or hashed lookups raise ValueError.
|
|
uv run python manage.py collectstatic --noinput
|
|
|
|
# dj-queue supervisor (workers + dispatcher + scheduler). Run on ONE host only.
|
|
exec uv run python manage.py dj_queue
|