-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathdocker-deploy.sh
More file actions
executable file
·130 lines (111 loc) · 3.31 KB
/
docker-deploy.sh
File metadata and controls
executable file
·130 lines (111 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash
# File2MD Docker部署脚本
# 支持.env文件热重载
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
# 检查Docker是否安装
if ! command -v docker &> /dev/null; then
log_error "Docker未安装,请先安装Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
log_error "Docker Compose未安装,请先安装Docker Compose"
exit 1
fi
# 检查.env文件
if [[ ! -f ".env" ]]; then
log_warning "未找到.env文件,将使用默认配置"
if [[ -f ".env.example" ]]; then
log_info "复制.env.example为.env..."
cp .env.example .env
log_success "已创建.env文件,请根据需要修改配置"
else
log_warning "未找到.env.example文件,将使用docker-compose.yml中的默认配置"
fi
else
log_info "找到.env文件,将使用自定义配置"
fi
log_info "开始Docker部署..."
# 停止现有容器
log_info "停止现有容器..."
docker-compose down 2>/dev/null || true
# 清理选项
if [[ "$1" == "--clean" ]]; then
log_info "清理旧镜像和卷..."
docker-compose down --rmi all --volumes --remove-orphans 2>/dev/null || true
docker system prune -f
fi
# 创建必要目录
log_info "创建必要目录..."
mkdir -p logs temp .paddleocr
# 设置目录权限
chmod 755 logs temp .paddleocr
# 构建并启动服务
log_info "构建并启动服务..."
docker-compose up --build -d
# 等待服务启动
log_info "等待服务启动..."
sleep 30
# 检查服务状态
log_info "检查服务状态..."
docker-compose ps
# 健康检查
log_info "执行健康检查..."
for i in {1..15}; do
if curl -s http://localhost:8999/v1/health > /dev/null 2>&1; then
log_success "✓ 健康检查通过"
break
else
if [[ $i -eq 15 ]]; then
log_error "✗ 健康检查失败,服务可能未正常启动"
log_info "查看容器日志: docker-compose logs medicnex-file2md"
exit 1
fi
log_info "健康检查重试 $i/15..."
sleep 10
fi
done
# 显示服务信息
echo ""
echo "=================================================="
log_success "Docker部署完成!"
echo "=================================================="
echo ""
echo "🌐 服务信息:"
echo " - API地址: http://localhost:8999"
echo " - 健康检查: http://localhost:8999/v1/health"
echo " - API文档: http://localhost:8999/docs"
echo " - Web界面: http://localhost:8999/webui"
echo ""
echo "🔧 管理命令:"
echo " - 查看日志: docker-compose logs -f"
echo " - 查看应用日志: docker-compose logs -f medicnex-file2md"
echo " - 停止服务: docker-compose down"
echo " - 重启服务: docker-compose restart"
echo " - 更新服务: docker-compose pull && docker-compose up -d"
echo " - 重新构建: docker-compose up --build -d"
echo ""
echo "📝 配置管理:"
echo " - 修改配置: 编辑.env文件后重启服务"
echo " - 热重载: 修改.env文件后服务会自动重新加载"
echo " - 查看配置: cat .env"
echo ""
echo "📊 容器状态:"
docker-compose ps