version: "3.9" services: db: image: mysql:8.0 container_name: pubquiz_mysql restart: always environment: MYSQL_DATABASE: "pubquiz_db" MYSQL_USER: "pubquiz_user" MYSQL_PASSWORD: "pubquiz_pass" MYSQL_ROOT_PASSWORD: "root_pass" ports: - "3306:3306" tmpfs: - /var/lib/mysql # Use RAM-based ephemeral storage instead of persistent volume healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"] interval: 5s timeout: 5s retries: 20 app: build: . container_name: pubquiz_app restart: unless-stopped depends_on: db: condition: service_healthy environment: # Database configuration DB_HOST: "db" DB_PORT: "3306" DB_NAME: "pubquiz_db" DB_USER: "pubquiz_user" DB_PASS: "pubquiz_pass" PYTHONUNBUFFERED: "1" # Base URL LEAGUELEDGER_BASE_URL: ${LEAGUELEDGER_BASE_URL:-http://localhost:8000} # Email configuration for Mailpit MAIL_USERNAME: "" MAIL_PASSWORD: "" MAIL_FROM: "noreply@leagueledger.net" MAIL_FROM_NAME: "LeagueLedger" MAIL_PORT: 1025 MAIL_SERVER: "mailpit" MAIL_STARTTLS: "False" MAIL_SSL_TLS: "False" MAIL_USE_CREDENTIALS: "False" MAIL_VALIDATE_CERTS: "False" # OAuth configuration - read from .env file # Authentik AUTHENTIK_CLIENT_ID: ${AUTHENTIK_CLIENT_ID:-} AUTHENTIK_CLIENT_SECRET: ${AUTHENTIK_CLIENT_SECRET:-} AUTHENTIK_CONFIG_URL: ${AUTHENTIK_CONFIG_URL:-} # Google OAuth GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-} GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:-} # GitHub OAuth GITHUB_CLIENT_ID: ${GITHUB_CLIENT_ID:-} GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET:-} # Facebook OAuth FACEBOOK_CLIENT_ID: ${FACEBOOK_CLIENT_ID:-} FACEBOOK_CLIENT_SECRET: ${FACEBOOK_CLIENT_SECRET:-} # Microsoft OAuth #MICROSOFT_CLIENT_ID: ${MICROSOFT_CLIENT_ID:-} #MICROSOFT_CLIENT_SECRET: ${MICROSOFT_CLIENT_SECRET:-} #MICROSOFT_TENANT: ${MICROSOFT_TENANT:-common} # Discord OAuth #DISCORD_CLIENT_ID: ${DISCORD_CLIENT_ID:-} #DISCORD_CLIENT_SECRET: ${DISCORD_CLIENT_SECRET:-} # LinkedIn OAuth LINKEDIN_CLIENT_ID: ${LINKEDIN_CLIENT_ID:-} LINKEDIN_CLIENT_SECRET: ${LINKEDIN_CLIENT_SECRET:-} NETID_CLIENT_ID: ${NETID_CLIENT_ID:-} NETID_CLIENT_SECRET: ${NETID_CLIENT_SECRET:-} command: uvicorn app.main:app --host 0.0.0.0 --reload ports: - "8000:8000" volumes: - ./:/app:delegated phpmyadmin: image: phpmyadmin/phpmyadmin container_name: pubquiz_phpmyadmin restart: unless-stopped depends_on: - db environment: PMA_HOST: db PMA_PORT: 3306 PMA_USER: pubquiz_user PMA_PASSWORD: pubquiz_pass ports: - "8001:80" mailpit: image: axllent/mailpit # Updated image name container_name: pubquiz_mailpit restart: unless-stopped ports: - "8025:8025" # Web UI - Access emails at http://localhost:8025/ - "1025:1025" # SMTP Server environment: MH_STORAGE: "memory" # Store emails in memory (they will be lost on container restart) MH_UI_WEB_PATH: "/" # Base path for the web UI networks: - default # No persistent volumes defined - database will reset when container stops