version: '3.7' services: backend: build: . command: uvicorn app.main:app --reload --host 0.0.0.0 --port 8050 --proxy-headers volumes: - ./src/:/app/ ports: - "8050:8050" environment: - SUPERADMIN_GH_PAT=${SUPERADMIN_GH_PAT} - SUPERADMIN_PWD=${SUPERADMIN_PWD} - GH_OAUTH_ID=${GH_OAUTH_ID} - GH_OAUTH_SECRET=${GH_OAUTH_SECRET} - POSTGRES_URL=postgresql+asyncpg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB} - OPENAI_API_KEY=${OPENAI_API_KEY} - SECRET_KEY=${SECRET_KEY} - SENTRY_DSN=${SENTRY_DSN} - SERVER_NAME=${SERVER_NAME} - POSTHOG_KEY=${POSTHOG_KEY} - SLACK_API_TOKEN=${SLACK_API_TOKEN} - SLACK_CHANNEL=${SLACK_CHANNEL} - SUPPORT_EMAIL=${SUPPORT_EMAIL} - DEBUG=true depends_on: db: condition: service_healthy db: image: postgres:15-alpine volumes: - postgres_data:/var/lib/postgresql/data/ expose: - 5432 environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "sh -c 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'"] interval: 10s timeout: 3s retries: 3 prometheus: image: prom/prometheus:latest container_name: prometheus ports: - 9090:9090 volumes: - ./apm/prometheus.yml:/etc/prometheus/prometheus.yml command: - "--config.file=/etc/prometheus/prometheus.yml" depends_on: - backend grafana: image: grafana/grafana:latest container_name: grafana depends_on: - prometheus ports: - 3000:3000 environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} - GF_USERS_ALLOW_SIGN_UP=false volumes: - ./apm/grafana:/etc/grafana/provisioning volumes: postgres_data: