Docker Swarm 部署多环境集群实践
Posted on:2023-11-05 | at 15:30 Docker Swarm 部署多环境集群时,服务配置很多都是共用的,如果把每个环境的配置都分别保存未免有些啰嗦,而且一旦有变更就需要修改多个文件,这时就可以对配置文件进行拆分。
一个常见的多环境部署方案是 local
staging
production
三环境部署。local
是开发人员在本地开发和测试使用的,staging
是系统预览环境,用来在系统上线前测试并发现问题,production
环境则是线上生产环境。
这三个环境很可能只有部分参数不同,例如 replicas 数量、数据库的用户名密码、开放端口等。而不太重要的一些参数(比如滚动更新配置、labels等)很有可能是共用的,如果把每个环境的配置都分别保存为一个 yaml
文件未免有些啰嗦,一旦有变更还要修改多个文件。
这时就可以拆分 compose
文件,像下面这样
执行 docker stack deploy -c base.yaml -c staging.yaml
命令就是用 staging 环境的配置去部署,它会将 base.yaml
和 staging.yaml
的内容进行合并。将 staging.yaml
替换为 prod.yaml
就可以用 production 的配置进行部署了。
另外一个技巧是,如果一个 compose
文件定义了多个 service,那不同的 service 也可能有相同的重启策略、回滚策略等,这时可以用 yaml
的锚点技巧优化 compose
文件定义,例如