-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
187 lines (154 loc) · 5.58 KB
/
Copy pathdeploy.sh
File metadata and controls
187 lines (154 loc) · 5.58 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#!/bin/bash
# =============================================================================
# MindMates 部署脚本
# Ubuntu 22.04 + Docker
# =============================================================================
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
# =============================================================================
# 1. 检查 Docker 是否安装
# =============================================================================
check_docker() {
log_info "检查 Docker 安装状态..."
if ! command -v docker &> /dev/null; then
log_warn "Docker 未安装,开始安装..."
install_docker
else
log_info "Docker 已安装: $(docker --version)"
fi
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
log_warn "Docker Compose 未安装,开始安装..."
install_docker_compose
else
log_info "Docker Compose 已安装"
fi
}
# =============================================================================
# 2. 安装 Docker
# =============================================================================
install_docker() {
log_info "安装 Docker..."
# 更新包索引
sudo apt-get update
# 安装依赖
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加 Docker GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
log_info "Docker 安装完成"
}
# =============================================================================
# 3. 安装 Docker Compose (如果需要)
# =============================================================================
install_docker_compose() {
log_info "Docker Compose 已包含在 docker-compose-plugin 中"
}
# =============================================================================
# 4. 检查环境变量文件
# =============================================================================
check_env_file() {
log_info "检查环境变量配置..."
if [ ! -f ".env" ]; then
if [ -f ".env.example" ]; then
log_warn ".env 文件不存在,从 .env.example 复制..."
cp .env.example .env
log_error "请编辑 .env 文件,配置必要的 API Keys:"
echo " - MIMO_API_KEY"
echo " - ZHIPU_API_KEY"
echo " - JWT_SECRET"
echo ""
echo "编辑完成后,重新运行此脚本"
exit 1
else
log_error ".env.example 文件不存在"
exit 1
fi
fi
# 检查必要的环境变量
source .env
if [ "$MIMO_API_KEY" == "your_mimo_api_key_here" ] || [ -z "$MIMO_API_KEY" ]; then
log_error "请配置 MIMO_API_KEY"
exit 1
fi
if [ "$ZHIPU_API_KEY" == "your_zhipu_api_key_here" ] || [ -z "$ZHIPU_API_KEY" ]; then
log_error "请配置 ZHIPU_API_KEY"
exit 1
fi
log_info "环境变量检查通过"
}
# =============================================================================
# 5. 构建和启动服务
# =============================================================================
deploy() {
log_info "开始部署 MindMates..."
# 停止旧容器
log_info "停止旧容器..."
docker compose down --remove-orphans 2>/dev/null || true
# 构建镜像
log_info "构建 Docker 镜像..."
docker compose build --no-cache
# 启动服务
log_info "启动服务..."
docker compose up -d
# 等待服务启动
log_info "等待服务启动..."
sleep 10
# 检查服务状态
log_info "检查服务状态..."
docker compose ps
log_info "=========================================="
log_info "部署完成!"
log_info "=========================================="
echo ""
echo "访问地址: http://8.138.89.167"
echo ""
echo "API 端点:"
echo " - 前端: http://8.138.89.167/"
echo " - 业务API: http://8.138.89.167/api/"
echo " - AI API: http://8.138.89.167/ai/"
echo ""
echo "查看日志: docker compose logs -f"
echo "停止服务: docker compose down"
echo ""
}
# =============================================================================
# 6. 主函数
# =============================================================================
main() {
echo "=========================================="
echo "MindMates 部署脚本"
echo "=========================================="
echo ""
# 进入项目目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
check_docker
check_env_file
deploy
}
# 运行主函数
main "$@"