mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:40:25 +00:00
fix: 修复Docker部署时加密密钥持久化问题
- 在docker-compose.yml中添加.env文件映射,避免重建容器时生成新密钥 - 修改docker-entrypoint.sh,只在密钥不存在时生成新的,否则使用现有的 - 移除Dockerfile中自动复制.env的逻辑,改为运行时检查 - 更新README文档,添加重要提示说明.env文件映射的必要性 - 解决了每次重建容器导致之前加密数据无法解密的严重问题
This commit is contained in:
@@ -3,6 +3,18 @@ set -e
|
||||
|
||||
echo "🚀 Claude Relay Service 启动中..."
|
||||
|
||||
# 检查并创建 .env 文件
|
||||
if [ ! -f "/app/.env" ]; then
|
||||
echo "📋 检测到 .env 不存在,从模板创建..."
|
||||
if [ -f "/app/.env.example" ]; then
|
||||
cp /app/.env.example /app/.env
|
||||
echo "✅ .env 已从模板创建"
|
||||
else
|
||||
echo "❌ 错误: .env.example 不存在"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 生成随机字符串的函数
|
||||
generate_random_string() {
|
||||
length=$1
|
||||
@@ -31,7 +43,11 @@ if [ -f "/app/.env" ]; then
|
||||
JWT_SECRET=$(grep "^JWT_SECRET=" /app/.env | cut -d'=' -f2)
|
||||
if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-jwt-secret-here" ]; then
|
||||
JWT_SECRET=$(generate_random_string 64)
|
||||
echo "🔑 生成 JWT_SECRET"
|
||||
echo "🔑 生成新的 JWT_SECRET"
|
||||
# 更新 .env 文件
|
||||
sed -i "s/JWT_SECRET=.*/JWT_SECRET=${JWT_SECRET}/" /app/.env
|
||||
else
|
||||
echo "✅ 使用现有的 JWT_SECRET"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -40,13 +56,15 @@ if [ -f "/app/.env" ]; then
|
||||
ENCRYPTION_KEY=$(grep "^ENCRYPTION_KEY=" /app/.env | cut -d'=' -f2)
|
||||
if [ -z "$ENCRYPTION_KEY" ] || [ "$ENCRYPTION_KEY" = "your-encryption-key-here" ]; then
|
||||
ENCRYPTION_KEY=$(generate_random_string 32)
|
||||
echo "🔑 生成 ENCRYPTION_KEY"
|
||||
echo "🔑 生成新的 ENCRYPTION_KEY"
|
||||
# 更新 .env 文件
|
||||
sed -i "s/ENCRYPTION_KEY=.*/ENCRYPTION_KEY=${ENCRYPTION_KEY}/" /app/.env
|
||||
else
|
||||
echo "✅ 使用现有的 ENCRYPTION_KEY"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 直接使用sed修改.env文件 - root用户无权限问题
|
||||
sed -i "s/JWT_SECRET=.*/JWT_SECRET=${JWT_SECRET}/" /app/.env
|
||||
sed -i "s/ENCRYPTION_KEY=.*/ENCRYPTION_KEY=${ENCRYPTION_KEY}/" /app/.env
|
||||
# 更新 Redis 主机配置
|
||||
sed -i "s/REDIS_HOST=.*/REDIS_HOST=redis/" /app/.env
|
||||
|
||||
echo "✅ .env 已配置"
|
||||
|
||||
Reference in New Issue
Block a user