Skip to content

Commit 85fc3f6

Browse files
committed
ci(deploy): 优化部署流程并添加资源限制
- 在 CI 流程中添加旧镜像清理步骤,保留最近 3个版本 - 更新 deploy.sh脚本,增加停止并删除现有容器的步骤 - 在 docker-compose.yml 中为各服务添加内存限制配置
1 parent 6769db4 commit 85fc3f6

3 files changed

Lines changed: 60 additions & 2 deletions

File tree

.github/workflows/ci.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,17 @@ jobs:
167167
168168
# 使用GitHub SHA作为标签部署
169169
./deploy.sh ${{ github.sha }}
170+
171+
# 清理旧镜像,保留最近3个版本
172+
echo "清理旧镜像..."
173+
for service in im-gateway ruoyi-auth ruoyi-system im-core-server; do
174+
# 获取服务的所有镜像ID,除了最近使用的3个
175+
image_ids=$(docker images ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/$service --format "{{.ID}}" | tail -n +4)
176+
if [ ! -z "$image_ids" ]; then
177+
echo "清理$service的旧镜像: $image_ids"
178+
docker rmi $image_ids 2>/dev/null || true
179+
fi
180+
done
170181
171182
# - name: Manual approval
172183
# uses: trstringer/manual-approval@v2

deploy.sh

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,27 @@ docker login ${DOCKER_REGISTRY} --username=$REGISTRY_USERNAME --password=$REGIST
2121
echo "拉取最新镜像..."
2222
$DOCKER_COMPOSE_CMD pull
2323

24-
# 启动服务
24+
# 停止并删除现有容器
25+
echo "停止并删除现有容器..."
26+
$DOCKER_COMPOSE_CMD down
27+
28+
# 清理任何可能残留的旧容器
29+
echo "清理残留容器..."
30+
containers=$(docker ps -a --filter "name=im-gateway|im-core-server|ruoyi-auth|ruoyi-system" --format "{{.Names}}")
31+
if [ ! -z "$containers" ]; then
32+
echo "发现残留容器: $containers"
33+
34+
# 先优雅地停止容器
35+
echo "正在停止容器..."
36+
docker stop $containers 2>/dev/null || true
37+
38+
# 确认容器已停止后再删除
39+
echo "正在删除容器..."
40+
docker rm $containers 2>/dev/null || true
41+
fi
42+
43+
# 强制重新创建启动服务
2544
echo "启动服务..."
26-
$DOCKER_COMPOSE_CMD up -d
45+
$DOCKER_COMPOSE_CMD up -d --force-recreate
2746

2847
echo "部署完成!"

docker-compose.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ services:
55
image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/im-gateway:${TAG:-latest}
66
container_name: im-gateway
77
restart: always
8+
deploy:
9+
resources:
10+
limits:
11+
memory: 256M
812
ports:
913
- "8080:8080"
1014
- "9688:9688"
@@ -26,6 +30,10 @@ services:
2630
image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/im-core-server:${TAG:-latest}
2731
container_name: im-core-server
2832
restart: always
33+
deploy:
34+
resources:
35+
limits:
36+
memory: 256M
2937
ports:
3038
- "9601:9601"
3139
environment:
@@ -44,6 +52,10 @@ services:
4452
image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/ruoyi-auth:${TAG:-latest}
4553
container_name: ruoyi-auth
4654
restart: always
55+
deploy:
56+
resources:
57+
limits:
58+
memory: 256M
4759
ports:
4860
- "9210:9210"
4961
environment:
@@ -63,6 +75,10 @@ services:
6375
image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/ruoyi-system:${TAG:-latest}
6476
container_name: ruoyi-system
6577
restart: always
78+
deploy:
79+
resources:
80+
limits:
81+
memory: 256M
6682
ports:
6783
- "9201:9201"
6884
environment:
@@ -82,6 +98,10 @@ services:
8298
# image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/ruoyi-gen:${TAG:-latest}
8399
# container_name: ruoyi-gen
84100
# restart: always
101+
# deploy:
102+
# resources:
103+
# limits:
104+
# memory: 256M
85105
# ports:
86106
# - "9202:9202"
87107
# environment:
@@ -101,6 +121,10 @@ services:
101121
# image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/ruoyi-job:${TAG:-latest}
102122
# container_name: ruoyi-job
103123
# restart: always
124+
# deploy:
125+
# resources:
126+
# limits:
127+
# memory: 256M
104128
# ports:
105129
# - "9203:9203"
106130
# environment:
@@ -120,6 +144,10 @@ services:
120144
# image: ${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/ruoyi-resource:${TAG:-latest}
121145
# container_name: ruoyi-resource
122146
# restart: always
147+
# deploy:
148+
# resources:
149+
# limits:
150+
# memory: 256M
123151
# ports:
124152
# - "9300:9300"
125153
# environment:

0 commit comments

Comments
 (0)