使用 Docker Compose 实现滚动更新部署
最近在写一个Golang
的微服务项目,受限于测试和生产环境交付的时候都无法使用到Kubernetes
,所以准备使用Docker Compose
部署,记录一下实现方式。
思路
- 变更容器编排文件
docker-compose.yaml
- 获取当前启动的容器id,标识为旧容器
- 更新并调度服务比当前容器数量多的指定数量
- 杀掉标识的旧容器
- 清理杀掉的旧容器
- 重新调度服务容器数量为期望数量
shell 脚本实现
备注:此脚本需在 docker-compose.yaml 编排文件所在目录执行。或者自己改脚本,cd 进目标目录执行
1 |
|
注意
使用此方式时,容器编排文件不能使用ports
暴露端口,不然会提示端口占用,因为一个端口只能绑定一个端口,微服务的话你可以使用consul/etcd
来实现服务注册发现,注册进去的是当前容器的ip。如果是http服务的话,可以在当前部署服务的网桥下启动一个nginx
容器来暴露出指定端口做网关,nginx配置文件负载到服务容器。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小下同学!
评论