带有GitLab,docker和docker私有注册表的CD

时间:2018-03-12 18:53:23

标签: docker gitlab gitlab-ci continuous-deployment docker-registry

我们需要自动化部署过程。让我指出我们使用的堆栈。 我们有自己的GitLab CE实例和私有docker注册表。在生产服务器上,应用程序在容器中运行。在每次主提交之后,GitLab CI使用代码构建映像,将其发送到docker注册表,这就是自动化结束的地方。

生产服务器上的部署可以通过几个步骤执行 - 停止当前的应用程序容器,拉出更新的容器并运行它。

自动化此过程的最佳方法是什么?

我读到了几个解决方案(但我相信还有更多)

  • docker私有注册表ping到生产服务器,该服务器本身执行上述所有步骤(由例如主管或类似东西管理的生产机器上的脚本)
  • 使用docker machine远程管理运行容器

首选方式是什么?或者你可以推荐其他东西吗?

无需使用swarm,kubernetes等工具。这是非常简单的应用程序。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如何在生产机器上安装Gitlab-ci runner?在推送到名为deploy的主服务器上的注册表之后执行一项工作,并使用Gi​​tlab CI标记将其固定到该计算机上。

该作业只是从注册表中提取图像并重新启动您的服务或任何您已有的服务。

类似的东西:

deploy-job:
  stage: deploy
  tags:
    - production
  script:
    - docker login myprivateregistry.com -u $SECRET_USER -p $SECRET_PASS
    - docker pull $CI_REGISTRY_IMAGE:latest
    - docker-compose down
    - docker-compose up -d

答案 1 :(得分:0)

我能想到四种解决方案

  1. 在生产服务器上使用了望塔https://github.com/v2tec/watchtower
  2. 在将图像推送到注册表后运行一个webhook服务器,这是CI的请求。 https://github.com/adnanh/webhook
  3. 如前所述,也会在生产中运行CI,最终触发更新命令。
  4. 启用docker api并通过CI
  5. 请求更新容器
相关问题