这是我的设置,这个输出来自docker-machine ls.使用docker机器配置群.
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 hub(bitbucket)上创建自动构建
>推送更改后,触发docker hub上的构建
>将在docker hub上进行测试(npm测试)
>一旦构建成功,在docker hub上创建一个webhook.
> webhook将指向我自己的应用程序,然后将更改推送到群组
问题:
>可以在docker hub上运行测试,还是应该依赖其他服务?
>如果我依赖其他服务,您推荐的服务是什么?
>我的主要问题是将更改推送到docker swarm.我应该在远程计算机上设置docker-swarm并在那里托管应用程序吗?
最佳答案 这个过程的第一部分看起来都很好.变得复杂的是管理已部署的生产容器.
Is it okay to run your testing on docker hub or should I rely on
another service?
是的,假设您不需要进一步的集成测试,在docker hub上运行测试应该没问题.
我需要将我的容器与amazon服务集成并进行相当非标准的部署,因此这部分测试必须在亚马逊实例上完成.
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的问题.
您需要考虑如何淘汰旧版本并将最新版本的容器引入群体(通常称为调度).
可以使用的一种简单方法是:
>从旧的运行容器中删除流量
>停止旧的运行容器
>拉最新的容器
>开始最新的容器
冲洗并重复所有运行的容器.
这是通过声明服务在docker swarm中完成的.然后更新可以作为任务观看的图像.有关此过程详细信息的更多信息,请参阅Apply rolling update to swarm以及如何在Amazon updating docker containers in ecs中执行此操作