docker swarm 的持续集成工作流
Continuous Integration workflow with docker swarm
这是我的设置,此输出取自 docker-machine ls
。使用 docker 机器配置 swarm。
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
cluster-master * (swarm) digitalocean Running tcp://REDACTED:2376 cluster-master (master) v1.11.1
kv-store - digitalocean Running tcp://REDACTED:2376 v1.11.1
node-1 - digitalocean Running tcp://REDACTED:2376 cluster-master v1.11.1
node-2 - digitalocean Running tcp://REDACTED:2376 cluster-master v1.11.1
现在我正在寻找一种方法来设置我的 CI/CD 工作流程。这是我的初步想法:
- 在 docker 集线器 (bitbucket) 上创建自动构建
- 推送更改后,触发在 docker hub
上构建
- 测试将在 docker 集线器(npm 测试)
上完成
- 构建成功后在 docker 集线器上创建一个 webhook。
- webhook 将指向我自己的应用程序,然后将更改推送到 swarm
问题:
- 可以 运行 你在 docker 集线器上进行测试还是我应该依赖其他服务?
- 如果我将依赖其他服务,您推荐的服务是什么?
- 我的主要问题是将更改推送到 docker 群。我应该在远程机器上设置我的 docker-swarm 并在那里托管应用程序吗?
流程的第一部分看起来一切正常。复杂的地方是管理已部署的生产容器。
Is it okay to run your testing on docker hub or should I rely on
another service?
是的,假设您不需要进一步的集成测试,运行 在 docker 集线器上进行测试应该没问题。
我需要将我的容器与亚马逊服务集成,并且有一个相当不标准的部署,所以这部分测试必须在亚马逊实例上完成。
My main problem is pushing the changes to the docker swarm. Should I setup my docker-swarm on a remote machine and host the application there?
如果您只使用一台机器,则不需要使用 swarm 的额外开销。如果您计划扩展到更大的多节点部署,可以部署到远程机器,因为您会更快地发现使用 swarm 的陷阱。
您需要考虑如何淘汰旧版本并将最新版本的容器引入 swarm,这通常称为调度。
可以使用的一种简单方法是:
- 从旧 运行ning 容器中删除流量
- 停止旧的 运行ning 容器
- 拉取最新的容器
- 启动最新容器
冲洗并重复所有 运行ning 容器。
这是在 docker swarm 中通过声明服务来完成的。然后更新可以作为任务观看的图像。有关此过程的详细信息,请参阅 Apply rolling update to swarm and for how to do this in Amazon updating docker containers in ecs
这是我的设置,此输出取自 docker-machine ls
。使用 docker 机器配置 swarm。
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
cluster-master * (swarm) digitalocean Running tcp://REDACTED:2376 cluster-master (master) v1.11.1
kv-store - digitalocean Running tcp://REDACTED:2376 v1.11.1
node-1 - digitalocean Running tcp://REDACTED:2376 cluster-master v1.11.1
node-2 - digitalocean Running tcp://REDACTED:2376 cluster-master v1.11.1
现在我正在寻找一种方法来设置我的 CI/CD 工作流程。这是我的初步想法:
- 在 docker 集线器 (bitbucket) 上创建自动构建
- 推送更改后,触发在 docker hub 上构建
- 测试将在 docker 集线器(npm 测试) 上完成
- 构建成功后在 docker 集线器上创建一个 webhook。
- webhook 将指向我自己的应用程序,然后将更改推送到 swarm
问题:
- 可以 运行 你在 docker 集线器上进行测试还是我应该依赖其他服务?
- 如果我将依赖其他服务,您推荐的服务是什么?
- 我的主要问题是将更改推送到 docker 群。我应该在远程机器上设置我的 docker-swarm 并在那里托管应用程序吗?
流程的第一部分看起来一切正常。复杂的地方是管理已部署的生产容器。
Is it okay to run your testing on docker hub or should I rely on another service?
是的,假设您不需要进一步的集成测试,运行 在 docker 集线器上进行测试应该没问题。
我需要将我的容器与亚马逊服务集成,并且有一个相当不标准的部署,所以这部分测试必须在亚马逊实例上完成。
My main problem is pushing the changes to the docker swarm. Should I setup my docker-swarm on a remote machine and host the application there?
如果您只使用一台机器,则不需要使用 swarm 的额外开销。如果您计划扩展到更大的多节点部署,可以部署到远程机器,因为您会更快地发现使用 swarm 的陷阱。
您需要考虑如何淘汰旧版本并将最新版本的容器引入 swarm,这通常称为调度。
可以使用的一种简单方法是:
- 从旧 运行ning 容器中删除流量
- 停止旧的 运行ning 容器
- 拉取最新的容器
- 启动最新容器 冲洗并重复所有 运行ning 容器。
这是在 docker swarm 中通过声明服务来完成的。然后更新可以作为任务观看的图像。有关此过程的详细信息,请参阅 Apply rolling update to swarm and for how to do this in Amazon updating docker containers in ecs