version: '3.8'
services:
postgres:
image: postgres:16-alpine
container_name: meritocrab-postgres
environment:
POSTGRES_USER: meritocrab
POSTGRES_PASSWORD: meritocrab_password
POSTGRES_DB: meritocrab
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U meritocrab"]
interval: 5s
timeout: 5s
retries: 5
server:
build:
context: .
dockerfile: Dockerfile
container_name: meritocrab-server
depends_on:
postgres:
condition: service_healthy
environment:
SERVER_HOST: 0.0.0.0
SERVER_PORT: 3000
DATABASE_URL: postgres://meritocrab:meritocrab_password@postgres:5432/meritocrab
DATABASE_MAX_CONNECTIONS: 10
GITHUB_APP_ID: ${GITHUB_APP_ID:-123456}
GITHUB_INSTALLATION_ID: ${GITHUB_INSTALLATION_ID:-7654321}
GITHUB_WEBHOOK_SECRET: ${GITHUB_WEBHOOK_SECRET:-development_webhook_secret}
GITHUB_PRIVATE_KEY_PATH: /app/private-key.pem
GITHUB_OAUTH_CLIENT_ID: ${GITHUB_OAUTH_CLIENT_ID:-your_client_id}
GITHUB_OAUTH_CLIENT_SECRET: ${GITHUB_OAUTH_CLIENT_SECRET:-your_client_secret}
GITHUB_OAUTH_REDIRECT_URL: ${GITHUB_OAUTH_REDIRECT_URL:-http://localhost:3000/auth/callback}
LLM_PROVIDER: ${LLM_PROVIDER:-mock}
LLM_API_KEY: ${LLM_API_KEY:-}
LLM_MODEL: ${LLM_MODEL:-claude-3-5-sonnet-20241022}
CREDIT_STARTING: 100
CREDIT_PR_THRESHOLD: 50
CREDIT_BLACKLIST_THRESHOLD: 0
MAX_CONCURRENT_LLM_EVALS: 5
RUST_LOG: ${RUST_LOG:-info}
ports:
- "3000:3000"
volumes:
- ${GITHUB_PRIVATE_KEY_FILE:-./test-private-key.pem}:/app/private-key.pem:ro
- ${CONFIG_FILE:-./config.toml}:/app/config.toml:ro
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
restart: unless-stopped
volumes:
postgres_data: