services: postgres: image: postgres:15 restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-samosachaat} POSTGRES_USER: ${POSTGRES_USER:-samosachaat_admin} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-localdev} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data - ./db/migrations:/docker-entrypoint-initdb.d:ro frontend: build: context: ./services/frontend restart: unless-stopped ports: - "${FRONTEND_PORT:-3000}:3000" environment: AUTH_SERVICE_URL: ${AUTH_SERVICE_URL:-http://auth:8001} CHAT_API_URL: ${CHAT_API_URL:-http://chat-api:8002} NEXTAUTH_URL: ${NEXTAUTH_URL:-http://localhost:3000} depends_on: - auth - chat-api auth: build: context: ./services/auth restart: unless-stopped ports: - "${AUTH_PORT:-8001}:8001" environment: DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://samosachaat_admin:localdev@postgres:5432/samosachaat} GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-} GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:-} GITHUB_CLIENT_ID: ${GITHUB_CLIENT_ID:-} GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET:-} JWT_PRIVATE_KEY: ${JWT_PRIVATE_KEY:-} JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY:-} AUTH_BASE_URL: ${AUTH_BASE_URL:-http://localhost:8001} FRONTEND_URL: ${FRONTEND_URL:-http://localhost:3000} INTERNAL_API_KEY: ${INTERNAL_API_KEY:-} SESSION_SECRET: ${SESSION_SECRET:-changeme} COOKIE_SECURE: ${COOKIE_SECURE:-false} COOKIE_DOMAIN: ${COOKIE_DOMAIN:-} REFRESH_COOKIE_NAME: ${REFRESH_COOKIE_NAME:-samosachaat_refresh} depends_on: - postgres chat-api: build: context: ./services/chat-api restart: unless-stopped ports: - "${CHAT_API_PORT:-8002}:8002" environment: DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://samosachaat_admin:localdev@postgres:5432/samosachaat} AUTH_SERVICE_URL: ${AUTH_SERVICE_URL:-http://auth:8001} # External inference (Modal, etc.). Set in `.env` — see `.env.example`. INFERENCE_SERVICE_URL: ${INFERENCE_SERVICE_URL} INTERNAL_API_KEY: ${INTERNAL_API_KEY:-} depends_on: - postgres - auth grafana: image: grafana/grafana:latest restart: unless-stopped ports: - "${GRAFANA_PORT:-3001}:3000" prometheus: image: prom/prometheus:latest restart: unless-stopped ports: - "${PROMETHEUS_PORT:-9090}:9090" loki: image: grafana/loki:latest restart: unless-stopped command: -config.file=/etc/loki/local-config.yaml ports: - "${LOKI_PORT:-3100}:3100" volumes: pgdata: