【问题标题】:Continuous Integration workflow with docker swarm使用 docker swarm 的持续集成工作流程
【发布时间】:2016-05-03 08:27:25
【问题描述】:

这是我的设置,此输出取自 docker-machine ls。使用 docker machine 来配置 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 工作流程。这是我最初的想法:

  1. 在 docker hub (bitbucket) 上创建自动构建
  2. 推送更改后,在 docker hub 上触发构建
  3. 测试将在 docker hub (npm test) 上完成
  4. 构建成功后,在 docker hub 上创建一个 webhook。
  5. webhook 将指向我自己的应用程序,然后该应用程序会将更改推送到 swarm

问题:

  • 可以在 docker hub 上运行测试还是应该依赖其他服务?
  • 如果我将依赖其他服务,您推荐的服务是什么?
  • 我的主要问题是将更改推送到 docker swarm。我应该在远程机器上设置我的 docker-swarm 并在那里托管应用程序吗?

【问题讨论】:

    标签: continuous-integration docker-compose continuous-deployment docker-machine docker-swarm


    【解决方案1】:

    过程的第一部分看起来都很好。复杂之处在于管理已部署的生产容器。

    可以在 docker hub 上运行测试还是我应该依赖 其他服务?

    是的,假设您不需要进一步的集成测试,在 docker hub 上运行测试应该没问题。

    我需要将我的容器与亚马逊服务集成并且有一个相当非标准的部署,所以这部分测试必须在亚马逊实例上完成。

    我的主要问题是将更改推送到 docker swarm。我应该在远程机器上设置我的 docker-swarm 并在那里托管应用程序吗?

    如果您只使用一台机器,则不需要使用 swarm 带来的额外开销。如果您打算扩展到更大的多节点部署,可以部署到远程机器上,因为您会很快发现使用 swarm 的问题。

    您需要考虑如何淘汰旧版本并将最新版本的容器引入集群,这通常称为调度。

    可以使用的一种简单方法是:

    1. 从运行中的旧容器中移除流量
    2. 停止旧的运行容器
    3. 拉取最新的容器
    4. 启动最新的容器 冲洗并重复所有正在运行的容器。

    这是通过声明服务在 docker swarm 中完成的。然后更新可以作为任务观看的图像。有关此过程详细信息的更多信息,请参阅Apply rolling update to swarm 以及如何在亚马逊中执行此操作updating docker containers in ecs

    【讨论】:

    • 我认为您的答案中唯一的问题是从旧容器中删除流量。我需要在不停机的情况下部署它。
    • 你需要运行多个容器,这样一个容器可以处理流量,而另一个容器被更新。
    • 我认为最好的方法是创建一个蓝绿部署
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2011-02-06
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多