services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env} POSTGRES_DB: ${POSTGRES_DB:-tanchi} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-tanchi}"] interval: 5s timeout: 5s retries: 10 ports: - "127.0.0.1:5432:5432" redis: image: redis:7-alpine restart: unless-stopped volumes: - redisdata:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 10 ports: - "127.0.0.1:6379:6379" api: build: context: . dockerfile: apps/api/Dockerfile restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: NODE_ENV: production PORT: 3000 DATABASE_URL: postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}@postgres:5432/${POSTGRES_DB:-tanchi} REDIS_URL: redis://redis:6379 APP_URL: ${APP_URL:-http://localhost:8080} AUTH_BASE_URL: ${AUTH_BASE_URL:-http://localhost:3000} AUTH_SECRET: ${AUTH_SECRET:?set AUTH_SECRET in .env} ENCRYPTION_KEY: ${ENCRYPTION_KEY:?set ENCRYPTION_KEY in .env} REQUIRE_EMAIL_VERIFICATION: ${REQUIRE_EMAIL_VERIFICATION:-false} DISABLE_SIGNUP: ${DISABLE_SIGNUP:-false} LLM_PROVIDER: ${LLM_PROVIDER:-api} LLM_RESEARCH_PROVIDER: ${LLM_RESEARCH_PROVIDER:-} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} OPENAI_API_KEY: ${OPENAI_API_KEY:-} OPENAI_BASE_URL: ${OPENAI_BASE_URL:-https://api.openai.com/v1} GEMINI_API_KEY: ${GEMINI_API_KEY:-} MOONSHOT_API_KEY: ${MOONSHOT_API_KEY:-} MOONSHOT_BASE_URL: ${MOONSHOT_BASE_URL:-https://api.moonshot.ai/v1} HUNTER_API_KEY: ${HUNTER_API_KEY:-} RUN_WORKERS: ${RUN_WORKERS:-true} MAIL_FROM_EMAIL: ${MAIL_FROM_EMAIL:-Tanchi } MAIL_SMTP_HOST: ${MAIL_SMTP_HOST:-} MAIL_SMTP_PORT: ${MAIL_SMTP_PORT:-587} MAIL_SMTP_USER: ${MAIL_SMTP_USER:-} MAIL_SMTP_PASS: ${MAIL_SMTP_PASS:-} MAIL_SMTP_SECURE: ${MAIL_SMTP_SECURE:-false} ports: - "3000:3000" web: build: context: . dockerfile: apps/web/Dockerfile args: VITE_API_URL: ${VITE_API_URL:-http://localhost:3000} restart: unless-stopped depends_on: - api ports: - "8080:80" volumes: pgdata: redisdata: