This commit is contained in:
@@ -38,14 +38,40 @@ jobs:
|
|||||||
registry.bmycode.help/app-product:latest
|
registry.bmycode.help/app-product:latest
|
||||||
registry.bmycode.help/app-product:${{ github.sha }}
|
registry.bmycode.help/app-product:${{ github.sha }}
|
||||||
|
|
||||||
|
|
||||||
|
- name: 替换镜像标签为 github.sha
|
||||||
|
run: |
|
||||||
|
sed -i "s|{{IMAGE_TAG}}|${{ github.sha }}|g" app-product.yml
|
||||||
|
|
||||||
|
# 验证替换结果(可选,用于调试)
|
||||||
|
echo "替换后的 app-product.yml 内容:"
|
||||||
|
cat app-product.yml
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
- name: 上传 app-product.yml 到前端集群管理机
|
||||||
|
uses: appleboy/scp-action@v1
|
||||||
|
with:
|
||||||
|
host: ${{ vars.SSH_MANAGE }}
|
||||||
|
username: ${{ secrets.USERNAME }}
|
||||||
|
password: ${{ secrets.PASSWORD }}
|
||||||
|
port: ${{ secrets.PORT }}
|
||||||
|
source: "app-product.yml"
|
||||||
|
target: "/home/bmy/"
|
||||||
|
|
||||||
- name: 登录前端集群,拉镜像
|
- name: 登录前端集群,拉镜像
|
||||||
uses: appleboy/ssh-action@v1
|
uses: appleboy/ssh-action@v1
|
||||||
with:
|
with:
|
||||||
# 192.168.139.19,192.168.139.120,192.168.139.242
|
# 统一登录三台前端集群的linux,统一拉取刚推到仓库的最新镜像
|
||||||
|
# 解决 Swarm 无法控制 工作机拉取镜像的问题!
|
||||||
host: ${{ vars.SSH_HOST_LIST }}
|
host: ${{ vars.SSH_HOST_LIST }}
|
||||||
sync: true
|
sync: true
|
||||||
username: ${{ secrets.USERNAME }}
|
username: ${{ secrets.USERNAME }}
|
||||||
password: ${{ secrets.PASSWORD }}
|
password: ${{ secrets.PASSWORD }}
|
||||||
port: ${{ secrets.PORT }}
|
port: ${{ secrets.PORT }}
|
||||||
script: |
|
script: |
|
||||||
|
# 拉取刚打包的最新镜像
|
||||||
docker pull registry.bmycode.help/app-product:${{ github.sha }}
|
docker pull registry.bmycode.help/app-product:${{ github.sha }}
|
||||||
|
# 进入部署目录
|
||||||
|
cd /home/bmy/
|
||||||
|
# 部署到 Swarm 集群
|
||||||
|
docker stack deploy -c app-product.yml app-product
|
||||||
|
|||||||
39
app-product.yml
Normal file
39
app-product.yml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
version: "3.8" # Docker Compose 文件版本,3.8 支持 Swarm 模式的所有功能
|
||||||
|
|
||||||
|
services:
|
||||||
|
app-product:
|
||||||
|
image: registry.bmycode.help/app-product:{{IMAGE_TAG}}
|
||||||
|
ports:
|
||||||
|
- target: 80 # 容器内部端口
|
||||||
|
published: 1301 # 宿主机对外暴露端口
|
||||||
|
protocol: tcp # 协议类型
|
||||||
|
mode: ingress # 模式:使用路由网格
|
||||||
|
deploy:
|
||||||
|
replicas: 3 # 副本数量,在集群中运行 3 个容器实例
|
||||||
|
placement:
|
||||||
|
max_replicas_per_node: 1 # 每个 Swarm 节点最多运行 1 个副本,确保高可用性
|
||||||
|
restart_policy:
|
||||||
|
condition: any # 重启条件:任何情况下容器退出都重启
|
||||||
|
delay: 5s # 重启延迟 5 秒
|
||||||
|
max_attempts: 3 # 最大重启尝试次数
|
||||||
|
update_config: # 滚动更新配置
|
||||||
|
parallelism: 1 # 并行更新数量:一次只更新 1 个容器
|
||||||
|
delay: 10s # 更新间隔:每个容器更新后等待 10 秒再更新下一个
|
||||||
|
failure_action: rollback # 更新失败时自动回滚到上一版本
|
||||||
|
order: start-first # 更新顺序:先启动新容器,确认健康后再停止旧容器
|
||||||
|
rollback_config: # 回滚配置
|
||||||
|
parallelism: 1 # 回滚时并行数量
|
||||||
|
delay: 5s # 回滚延迟
|
||||||
|
resources: # 资源限制
|
||||||
|
limits: # 资源上限
|
||||||
|
cpus: "0.50" # 最多使用 0.5 个 CPU 核心
|
||||||
|
memory: "256M" # 最多使用 256MB 内存
|
||||||
|
reservations: # 资源预留
|
||||||
|
cpus: "0.25" # 预留 0.25 个 CPU 核心
|
||||||
|
memory: "128M" # 预留 128MB 内存
|
||||||
|
networks:
|
||||||
|
- frontend # 连接到 frontend 网络
|
||||||
|
|
||||||
|
networks:
|
||||||
|
frontend: # 定义 frontend 网络
|
||||||
|
driver: overlay # 使用 overlay 网络驱动,支持跨主机通信
|
||||||
Reference in New Issue
Block a user