xianyu-auto-reply/fix-docker-warnings.sh
2025-07-24 12:05:21 +08:00

146 lines
3.5 KiB
Bash

#!/bin/bash
# 修复Docker部署警告的快速脚本
# 解决version过时和.env文件缺失问题
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
print_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
echo "========================================"
echo " Docker部署警告修复脚本"
echo "========================================"
echo ""
# 1. 检查并创建.env文件
print_info "检查 .env 文件..."
if [ ! -f ".env" ]; then
if [ -f ".env.example" ]; then
print_info "从 .env.example 创建 .env 文件..."
cp .env.example .env
print_success ".env 文件已创建"
else
print_warning ".env.example 文件不存在"
print_info "创建基本的 .env 文件..."
cat > .env << 'EOF'
# 闲鱼自动回复系统 Docker 环境变量配置文件
# 基础配置
TZ=Asia/Shanghai
PYTHONUNBUFFERED=1
LOG_LEVEL=INFO
# 数据库配置
DB_PATH=/app/data/xianyu_data.db
# 服务配置
WEB_PORT=8080
# 安全配置
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
JWT_SECRET_KEY=xianyu-auto-reply-secret-key-2024
# 资源限制
MEMORY_LIMIT=512
CPU_LIMIT=0.5
MEMORY_RESERVATION=256
CPU_RESERVATION=0.25
# 自动回复配置
AUTO_REPLY_ENABLED=true
WEBSOCKET_URL=wss://wss-goofish.dingtalk.com/
HEARTBEAT_INTERVAL=15
TOKEN_REFRESH_INTERVAL=3600
EOF
print_success "基本 .env 文件已创建"
fi
else
print_success ".env 文件已存在"
fi
# 2. 检查docker-compose.yml版本问题
print_info "检查 docker-compose.yml 配置..."
if grep -q "^version:" docker-compose.yml 2>/dev/null; then
print_warning "发现过时的 version 字段"
print_info "移除 version 字段..."
# 备份原文件
cp docker-compose.yml docker-compose.yml.backup
# 移除version行
sed -i '/^version:/d' docker-compose.yml
sed -i '/^$/N;/^\n$/d' docker-compose.yml # 移除空行
print_success "已移除过时的 version 字段"
print_info "原文件已备份为 docker-compose.yml.backup"
else
print_success "docker-compose.yml 配置正确"
fi
# 3. 检查env_file配置
print_info "检查 env_file 配置..."
if grep -A1 "env_file:" docker-compose.yml | grep -q "required: false"; then
print_success "env_file 配置正确"
else
print_info "更新 env_file 配置为可选..."
# 备份文件(如果还没备份)
if [ ! -f "docker-compose.yml.backup" ]; then
cp docker-compose.yml docker-compose.yml.backup
fi
# 更新env_file配置
sed -i '/env_file:/,+1c\
env_file:\
- path: .env\
required: false' docker-compose.yml
print_success "env_file 配置已更新"
fi
# 4. 验证修复结果
print_info "验证修复结果..."
echo ""
print_info "测试 Docker Compose 配置..."
if docker-compose config >/dev/null 2>&1; then
print_success "Docker Compose 配置验证通过"
else
print_error "Docker Compose 配置验证失败"
echo "请检查 docker-compose.yml 文件"
exit 1
fi
echo ""
print_success "所有警告已修复!"
echo ""
print_info "现在可以正常使用以下命令:"
echo " docker-compose up -d # 启动服务"
echo " docker-compose ps # 查看状态"
echo " docker-compose logs -f # 查看日志"
echo ""
print_info "如果需要恢复原配置:"
echo " mv docker-compose.yml.backup docker-compose.yml"