#!/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 # dj-queue supervisor (workers + dispatcher + scheduler). Run on ONE host only. exec uv run python manage.py dj_queue