| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- services:
- postgres:
- image: postgres:18
- restart: unless-stopped
- ports:
- - "${POSTGRES_PORT:-5432}:5432"
- environment:
- POSTGRES_USER: ${DB_USER:-postgres}
- POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres}
- POSTGRES_DB: ${DB_NAME:-claude_code_hub}
- PGDATA: /data/pgdata
- TZ: Asia/Shanghai
- PGTZ: Asia/Shanghai
- volumes:
- - ../data/postgres-dev:/data
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres} -d ${DB_NAME:-claude_code_hub}"]
- interval: 5s
- timeout: 5s
- retries: 10
- start_period: 10s
- redis:
- image: redis:7-alpine
- restart: unless-stopped
- ports:
- - "${REDIS_PORT:-6379}:6379"
- volumes:
- - ../data/redis-dev:/data
- command: redis-server --appendonly yes
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 5s
- timeout: 3s
- retries: 5
- start_period: 5s
- app:
- profiles:
- - app
- build:
- context: ..
- dockerfile: deploy/Dockerfile
- args:
- APP_VERSION: ${APP_VERSION:-dev}
- image: claude-code-hub-local:${APP_VERSION:-dev}
- restart: unless-stopped
- depends_on:
- postgres:
- condition: service_healthy
- redis:
- condition: service_healthy
- environment:
- NODE_ENV: production
- DSN: postgresql://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@postgres:5432/${DB_NAME:-claude_code_hub}
- REDIS_URL: redis://redis:6379
- AUTO_MIGRATE: ${AUTO_MIGRATE:-true}
- ENABLE_RATE_LIMIT: ${ENABLE_RATE_LIMIT:-true}
- SESSION_TTL: ${SESSION_TTL:-300}
- ADMIN_TOKEN: ${ADMIN_TOKEN:-cch-dev-admin}
- TZ: Asia/Shanghai
- ports:
- - "${APP_PORT:-23000}:3000"
- healthcheck:
- test: ["CMD-SHELL", "curl -f http://localhost:3000/api/actions/health || exit 1"]
- interval: 15s
- timeout: 5s
- retries: 20
- start_period: 30s
|