繁体   English   中英

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

[英]CD with GitLab, docker and docker private registry

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

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

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

我阅读了一些解决方案(但我相信还有更多)

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

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

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

在你的生产机器上安装 Gitlab-ci runner 怎么样? 并在推送到名为deploy master 上的注册表后执行一项工作,并使用 Gitlab CI 标签deploy其固定到该机器上。

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

类似的东西:

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. 在生产服务器上使用瞭望塔https://github.com/v2tec/watchtower
  2. 运行一个 webhook 服务器,这是你的 CI 在将图像推送到注册表后请求的。 https://github.com/adnanh/webhook
  3. 如前所述,也可以在生产环境中运行 CI,这最终会触发您的更新命令。
  4. 启用 docker api 并通过从 CI 请求来更新容器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM