6d796c95ff
- Implemented NetID OAuth provider in app/auth/oauth.py - Added styles for NetID login button in app/static/css/styles.css - Updated login.html to include NetID login option with custom button - Modified docker-compose.yml to include NetID client credentials - Enhanced social login setup documentation to include NetID instructions - Created demo environment configuration file (.env.demo) for easier setup - Updated .env.template to include NetID configuration options - Added comprehensive README.md with project features and setup instructions
122 lines
3.4 KiB
YAML
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
|
|
- "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
|