Files

122 lines
3.4 KiB
YAML

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