2
0

docker-compose.yaml 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. services:
  2. postgres:
  3. image: postgres:18
  4. container_name: claude-code-hub-db
  5. restart: unless-stopped
  6. ports:
  7. - "35432:5432"
  8. env_file:
  9. - ./.env
  10. environment:
  11. POSTGRES_USER: ${DB_USER:-postgres}
  12. POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres}
  13. POSTGRES_DB: ${DB_NAME:-claude_code_hub}
  14. # 使用自定义数据目录
  15. PGDATA: /data/pgdata
  16. # 设置时区为上海
  17. TZ: Asia/Shanghai
  18. PGTZ: Asia/Shanghai
  19. volumes:
  20. # 持久化数据库数据到本地 ./data/postgres 目录
  21. # 挂载到 /data 而不是 /var/lib/postgresql/data 避免权限冲突
  22. - ./data/postgres:/data
  23. healthcheck:
  24. test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres} -d ${DB_NAME:-claude_code_hub}"]
  25. interval: 5s
  26. timeout: 5s
  27. retries: 10
  28. start_period: 10s
  29. redis:
  30. image: redis:7-alpine
  31. container_name: claude-code-hub-redis
  32. restart: unless-stopped
  33. volumes:
  34. # 持久化 Redis 数据到本地 ./data/redis 目录
  35. # 使用 AOF 持久化模式,确保数据不丢失
  36. - ./data/redis:/data
  37. command: redis-server --appendonly yes
  38. healthcheck:
  39. test: ["CMD", "redis-cli", "ping"]
  40. interval: 5s
  41. timeout: 3s
  42. retries: 5
  43. start_period: 5s
  44. app:
  45. image: ghcr.io/ding113/claude-code-hub:latest
  46. container_name: claude-code-hub-app
  47. depends_on:
  48. postgres:
  49. condition: service_healthy
  50. redis:
  51. condition: service_started
  52. env_file:
  53. - ./.env
  54. environment:
  55. NODE_ENV: production
  56. PORT: ${APP_PORT:-23000}
  57. DSN: postgresql://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@postgres:5432/${DB_NAME:-claude_code_hub}
  58. REDIS_URL: redis://redis:6379
  59. AUTO_MIGRATE: ${AUTO_MIGRATE:-true}
  60. ENABLE_RATE_LIMIT: ${ENABLE_RATE_LIMIT:-true}
  61. SESSION_TTL: ${SESSION_TTL:-300}
  62. # 设置时区为上海
  63. TZ: Asia/Shanghai
  64. ports:
  65. - "${APP_PORT:-23000}:${APP_PORT:-23000}"
  66. restart: unless-stopped