services: pinpoint-golf: build: context: . dockerfile: Dockerfile args: # Pass your Google Maps API key at build time (or load from .env) VITE_GOOGLE_MAPS_API_KEY: ${VITE_GOOGLE_MAPS_API_KEY:-} container_name: pinpoint-golf restart: unless-stopped ports: # Map host port 3000 to app port 3000 - "127.0.0.1:3474:3000" environment: - NODE_ENV=production - PORT=3000 - JWT_SECRET=${JWT_SECRET:-pinpoint_golf_prod_secret_2026} # Google OAuth Credentials (optional) - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-} # Authentik / OIDC Configuration (optional) - AUTHENTIK_ISSUER_URL=${AUTHENTIK_ISSUER_URL:-} - AUTHENTIK_CLIENT_ID=${AUTHENTIK_CLIENT_ID:-} - AUTHENTIK_CLIENT_SECRET=${AUTHENTIK_CLIENT_SECRET:-} # GitHub OAuth Credentials (optional) - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-} - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-} # Database connection - MARIADB_HOST=${MARIADB_HOST:-} - MARIADB_PORT=${MARIADB_PORT:-3306} - MARIADB_USER=${MARIADB_USER:-} - MARIADB_PASSWORD=${MARIADB_PASSWORD:-} - MARIADB_DATABASE=${MARIADB_DATABASE:-pinpoint_golf} - MARIADB_SSL=${MARIADB_SSL:-false} # Optional connection pool size for Galera multi-master concurrency - MARIADB_CONNECTION_LIMIT=${MARIADB_CONNECTION_LIMIT:-10} volumes: # Persistent volume for users, scorecards, custom courses, and community stats - pinpoint_data:/app/data healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://golf.jista.eu:3000/healthz"] interval: 30s timeout: 3s retries: 3 start_period: 5s volumes: pinpoint_data: driver: local