Files
claude-relay-service/docker-entrypoint.sh
shaw 2e511fa6f8 refactor: 简化Docker部署,使用环境变量替代.env文件映射
- 移除 docker-compose.yml 中的 .env 文件映射
- 添加所有必要的环境变量到 docker-compose.yml
- 简化 docker-entrypoint.sh,直接使用环境变量
- 更新 README,说明通过环境变量配置的方式
- 删除不再需要的初始化脚本
- 解决了 sed -i 在某些 Docker 环境下的 'Resource busy' 错误
2025-07-24 15:51:10 +08:00

65 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -e
echo "🚀 Claude Relay Service 启动中..."
# 检查关键环境变量
if [ -z "$JWT_SECRET" ]; then
echo "❌ 错误: JWT_SECRET 环境变量未设置"
echo " 请在 docker-compose.yml 中设置 JWT_SECRET"
echo " 例如: JWT_SECRET=your-random-secret-key-at-least-32-chars"
exit 1
fi
if [ -z "$ENCRYPTION_KEY" ]; then
echo "❌ 错误: ENCRYPTION_KEY 环境变量未设置"
echo " 请在 docker-compose.yml 中设置 ENCRYPTION_KEY"
echo " 例如: ENCRYPTION_KEY=your-32-character-encryption-key"
exit 1
fi
# 检查并复制配置文件
if [ ! -f "/app/config/config.js" ]; then
echo "📋 检测到 config.js 不存在,从模板创建..."
if [ -f "/app/config/config.example.js" ]; then
cp /app/config/config.example.js /app/config/config.js
echo "✅ config.js 已创建"
else
echo "❌ 错误: config.example.js 不存在"
exit 1
fi
fi
# 显示配置信息
echo "✅ 环境配置已就绪"
echo " JWT_SECRET: [已设置]"
echo " ENCRYPTION_KEY: [已设置]"
echo " REDIS_HOST: ${REDIS_HOST:-localhost}"
echo " PORT: ${PORT:-3000}"
# 检查是否需要初始化
if [ ! -f "/app/data/init.json" ]; then
echo "📋 首次启动,执行初始化设置..."
# 如果设置了环境变量,显示提示
if [ -n "$ADMIN_USERNAME" ] || [ -n "$ADMIN_PASSWORD" ]; then
echo "📌 检测到预设的管理员凭据"
fi
# 执行初始化脚本
node /app/scripts/setup.js
echo "✅ 初始化完成"
else
echo "✅ 检测到已有配置,跳过初始化"
# 如果 init.json 存在但环境变量也设置了,显示警告
if [ -n "$ADMIN_USERNAME" ] || [ -n "$ADMIN_PASSWORD" ]; then
echo "⚠️ 警告: 检测到环境变量 ADMIN_USERNAME/ADMIN_PASSWORD但系统已初始化"
echo " 如需使用新凭据,请删除 data/init.json 文件后重启容器"
fi
fi
# 启动应用
echo "🌐 启动 Claude Relay Service..."
exec "$@"