Replace hardcoded settings with environment-driven config, add Docker compose for local and production deploys, migrate from pip to uv, and split Gitea workflows so PRs run tests only while master pushes deploy.
49 lines
946 B
Bash
Executable File
49 lines
946 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cd /app/company_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", "company_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
|
|
uv run python manage.py collectstatic --noinput
|
|
|
|
exec uv run gunicorn company_site.wsgi:application \
|
|
--bind "${GUNICORN_BIND:-0.0.0.0:8000}" \
|
|
--workers "${GUNICORN_WORKERS:-2}"
|