diff --git a/scripts/docker/init-electric-user.sh b/scripts/docker/init-electric-user.sh index 6ce9a42cd..b3856c573 100755 --- a/scripts/docker/init-electric-user.sh +++ b/scripts/docker/init-electric-user.sh @@ -36,6 +36,7 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-E \$\$; GRANT CONNECT ON DATABASE $POSTGRES_DB TO $ELECTRIC_DB_USER; + GRANT CREATE ON DATABASE $POSTGRES_DB TO $ELECTRIC_DB_USER; GRANT USAGE ON SCHEMA public TO $ELECTRIC_DB_USER; GRANT SELECT ON ALL TABLES IN SCHEMA public TO $ELECTRIC_DB_USER; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO $ELECTRIC_DB_USER; diff --git a/surfsense_backend/scripts/docker/entrypoint.sh b/surfsense_backend/scripts/docker/entrypoint.sh index 37f5c7e74..8619d2025 100644 --- a/surfsense_backend/scripts/docker/entrypoint.sh +++ b/surfsense_backend/scripts/docker/entrypoint.sh @@ -11,6 +11,26 @@ cleanup() { trap cleanup SIGTERM SIGINT +# Run database migrations with safeguards +echo "Running database migrations..." +# Wait for database to be ready (max 30 seconds) +for i in {1..30}; do + if python -c "from app.db import engine; import asyncio; asyncio.run(engine.dispose())" 2>/dev/null; then + echo "Database is ready." + break + fi + echo "Waiting for database... ($i/30)" + sleep 1 +done + +# Run migrations with timeout (60 seconds max) +if timeout 60 alembic upgrade head 2>&1; then + echo "Migrations completed successfully." +else + echo "WARNING: Migration failed or timed out. Continuing anyway..." + echo "You may need to run migrations manually: alembic upgrade head" +fi + echo "Starting FastAPI Backend..." python main.py & backend_pid=$!