version: '3.8' services: postgres: image: postgres:15-alpine container_name: auth_learning_postgres environment: POSTGRES_USER: ${POSTGRES_USER:-auth_user} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-auth_password} POSTGRES_DB: ${POSTGRES_DB:-auth_learning} volumes: - postgres_data:/var/lib/postgresql/data # - ./backend/init.sql:/docker-entrypoint-initdb.d/init.sql # Disabled - using Alembic migrations ports: - "5432:5432" networks: - auth_network healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-auth_user} -d ${POSTGRES_DB:-auth_learning}"] interval: 30s timeout: 10s retries: 10 start_period: 40s backend: volumes: - ./backend/app:/app/app - ./backend/alembic:/app/alembic - ./backend/alembic.ini:/app/alembic.ini - uploads:/app/uploads build: ./backend container_name: auth_learning_backend environment: DATABASE_URL: postgresql://${POSTGRES_USER:-auth_user}:${POSTGRES_PASSWORD:-auth_password}@postgres:5432/${POSTGRES_DB:-auth_learning} SECRET_KEY: ${SECRET_KEY:-your-secret-key-change-in-production} DEVELOPER_SECRET: ${DEVELOPER_SECRET:-1982} ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-30} REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-7} ports: - "8000:8000" depends_on: postgres: condition: service_healthy networks: - auth_network command: > sh -c " cd /app || true && echo 'Current directory:' && pwd && echo 'Files in /app:' && ls -la /app && echo 'Files in /app/alembic:' && ls -la /app/alembic/ && echo 'Running migrations...' && python -m alembic upgrade head && echo 'Starting server...' && uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload " frontend: volumes: - ./frontend:/usr/share/nginx/html build: ./frontend container_name: auth_learning_frontend ports: - "80:80" depends_on: - backend networks: - auth_network networks: auth_network: driver: bridge volumes: postgres_data: uploads: