refactor: 简化Docker部署,使用环境变量替代.env文件映射

- 移除 docker-compose.yml 中的 .env 文件映射
- 添加所有必要的环境变量到 docker-compose.yml
- 简化 docker-entrypoint.sh,直接使用环境变量
- 更新 README,说明通过环境变量配置的方式
- 删除不再需要的初始化脚本
- 解决了 sed -i 在某些 Docker 环境下的 'Resource busy' 错误
This commit is contained in:
shaw
2025-07-24 15:50:33 +08:00
parent 232c276c8c
commit 2e511fa6f8
5 changed files with 112 additions and 210 deletions

View File

@@ -1,10 +1,7 @@
version: '3.8'
# ⚠️ 重要提示:首次运行前必须执行以下命令
# touch .env
#
# 说明:如果不先创建 .env 文件Docker 会将其创建为目录而非文件,
# 导致容器无法正常启动。该文件用于存储加密密钥,必须持久化。
# Claude Relay Service Docker Compose 配置
# 所有配置通过环境变量设置,无需映射 .env 文件
services:
# 🚀 Claude Relay Service
@@ -15,16 +12,64 @@ services:
ports:
- "${PORT:-3000}:3000"
environment:
# 🌐 服务器配置
- NODE_ENV=production
- PORT=3000
- HOST=0.0.0.0
# 🔐 安全配置(必填)
- JWT_SECRET=${JWT_SECRET} # 必填至少32字符的随机字符串
- ENCRYPTION_KEY=${ENCRYPTION_KEY} # 必填32字符的加密密钥
- ADMIN_SESSION_TIMEOUT=${ADMIN_SESSION_TIMEOUT:-86400000}
- API_KEY_PREFIX=${API_KEY_PREFIX:-cr_}
# 👤 管理员凭据(可选)
- ADMIN_USERNAME=${ADMIN_USERNAME:-}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
# 📊 Redis 配置
- REDIS_HOST=redis
- REDIS_PORT=6379
- ADMIN_USERNAME=${ADMIN_USERNAME:-} # 可选:预设管理员用户名
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-} # 可选:预设管理员密码
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- REDIS_DB=${REDIS_DB:-0}
- REDIS_ENABLE_TLS=${REDIS_ENABLE_TLS:-}
# 🎯 Claude API 配置
- CLAUDE_API_URL=${CLAUDE_API_URL:-https://api.anthropic.com/v1/messages}
- CLAUDE_API_VERSION=${CLAUDE_API_VERSION:-2023-06-01}
- CLAUDE_BETA_HEADER=${CLAUDE_BETA_HEADER:-claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14}
# 🌐 代理配置
- DEFAULT_PROXY_TIMEOUT=${DEFAULT_PROXY_TIMEOUT:-60000}
- MAX_PROXY_RETRIES=${MAX_PROXY_RETRIES:-3}
# 📈 使用限制
- DEFAULT_TOKEN_LIMIT=${DEFAULT_TOKEN_LIMIT:-1000000}
# 📝 日志配置
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_MAX_SIZE=${LOG_MAX_SIZE:-10m}
- LOG_MAX_FILES=${LOG_MAX_FILES:-5}
# 🔧 系统配置
- CLEANUP_INTERVAL=${CLEANUP_INTERVAL:-3600000}
- TOKEN_USAGE_RETENTION=${TOKEN_USAGE_RETENTION:-2592000000}
- HEALTH_CHECK_INTERVAL=${HEALTH_CHECK_INTERVAL:-60000}
- SYSTEM_TIMEZONE=${SYSTEM_TIMEZONE:-Asia/Shanghai}
- TIMEZONE_OFFSET=${TIMEZONE_OFFSET:-8}
# 🎨 Web 界面配置
- WEB_TITLE=${WEB_TITLE:-Claude Relay Service}
- WEB_DESCRIPTION=${WEB_DESCRIPTION:-Multi-account Claude API relay service}
- WEB_LOGO_URL=${WEB_LOGO_URL:-/assets/logo.png}
# 🛠️ 开发配置
- DEBUG=${DEBUG:-false}
- ENABLE_CORS=${ENABLE_CORS:-true}
- TRUST_PROXY=${TRUST_PROXY:-true}
volumes:
- ./logs:/app/logs
- ./data:/app/data
- ./.env:/app/.env # 必须映射,用于持久化加密密钥
depends_on:
- redis
networks: