@@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
echo "Waiting for database..."
|
||||
python - <<'PY'
|
||||
import asyncio
|
||||
import os
|
||||
import sys
|
||||
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.asyncio import create_async_engine
|
||||
|
||||
|
||||
async def wait_db(retries: int = 40) -> None:
|
||||
url = os.environ["DATABASE_URL"]
|
||||
engine = create_async_engine(url)
|
||||
for i in range(retries):
|
||||
try:
|
||||
async with engine.connect() as conn:
|
||||
await conn.execute(text("SELECT 1"))
|
||||
await engine.dispose()
|
||||
print("Database is ready")
|
||||
return
|
||||
except Exception as exc: # noqa: BLE001
|
||||
print(f"DB not ready ({i + 1}/{retries}): {exc}")
|
||||
await asyncio.sleep(1)
|
||||
await engine.dispose()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
asyncio.run(wait_db())
|
||||
PY
|
||||
|
||||
echo "Running migrations..."
|
||||
alembic upgrade head
|
||||
|
||||
echo "Bootstrapping admin..."
|
||||
python -m app.bootstrap
|
||||
|
||||
echo "Starting application..."
|
||||
exec "$@"
|
||||
Reference in New Issue
Block a user