diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 522f4c1..62bc9c9 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -32,7 +32,7 @@ services: - .env # Expose only to host for your existing nginx to proxy to ports: - - "127.0.0.1:5000:5000" # Only accessible from localhost + - "0.0.0.0:5000:5000" # Only accessible from localhost depends_on: postgres: condition: service_healthy @@ -51,4 +51,4 @@ volumes: networks: oidc_network: - driver: bridge \ No newline at end of file + driver: bridge diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 7d49108..7925552 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -30,6 +30,44 @@ else echo "✓ JWT keys already exist" fi +echo "" +echo "Database Initialization..." +echo "========================================" + +# Wait for PostgreSQL to be ready +echo "Waiting for PostgreSQL..." +for i in {1..30}; do + if python3 -c "import psycopg2; psycopg2.connect('$DATABASE_URL')" 2>/dev/null; then + echo "✓ PostgreSQL is ready" + break + fi + if [ $i -eq 30 ]; then + echo "✗ PostgreSQL connection timeout" + exit 1 + fi + sleep 1 +done + +# Run database migrations +echo "Running database migrations..." +export FLASK_APP=oidc_server.py +flask db upgrade + +# Check if database needs seeding (check if admin user exists) +if ! python3 -c " +from oidc_server import app, db +from models import User +with app.app_context(): + admin = User.query.filter_by(username='admin').first() + exit(0 if admin else 1) +" 2>/dev/null; then + echo "Seeding database with initial data..." + flask seed + echo "✓ Database seeded successfully" +else + echo "✓ Database already seeded" +fi + echo "" echo "Starting OIDC server..." echo "========================================"