services: web: image: ghcr.io/poco-ai/tokenarena:latest ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=${DATABASE_URL:-postgresql://postgres:postgres@db:5432/token_arena} - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} - BETTER_AUTH_URL=${BETTER_AUTH_URL:-http://localhost:3000} - AUTH_MODE=${AUTH_MODE:-self-hosted} - SELF_HOSTED_ALLOWED_EMAILS=${SELF_HOSTED_ALLOWED_EMAILS:-} - TOKEN_ARENA_RUNTIME=${TOKEN_ARENA_RUNTIME:-node} - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-} - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-} - GITLAB_BASE_URL=${GITLAB_BASE_URL:-} - GITLAB_CLIENT_ID=${GITLAB_CLIENT_ID:-} - GITLAB_CLIENT_SECRET=${GITLAB_CLIENT_SECRET:-} - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-} - LINUXDO_CLIENT_ID=${LINUXDO_CLIENT_ID:-} - LINUXDO_CLIENT_SECRET=${LINUXDO_CLIENT_SECRET:-} - WATCHA_CLIENT_ID=${WATCHA_CLIENT_ID:-} - WATCHA_CLIENT_SECRET=${WATCHA_CLIENT_SECRET:-} - DISCORD_CLIENT_ID=${DISCORD_CLIENT_ID:-} - DISCORD_CLIENT_SECRET=${DISCORD_CLIENT_SECRET:-} - CLARITY_ID=${CLARITY_ID:-} - GA_SECRET=${GA_SECRET:-} depends_on: db: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres} - POSTGRES_DB=${POSTGRES_DB:-token_arena} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped volumes: postgres_data: