gpt4 book ai didi

maven - 在生产中使用 Jenkins 进行 Docker 工作流设计

转载 作者:行者123 更新时间:2023-12-02 18:16:22 25 4
gpt4 key购买 nike

我正在学习 Docker 几个星期,我认为是时候在生产环境( digital ocean )中开展项目了。我看到了工作流设计的一些问题。我想使用 GitHub 作为我的源代码。 Jenkins 用于持续集成。 Maven 用于从 Dockerfile 构建 WAR 和图像。

这是我的设计。

Docker workflow design with Jenkins on production

但我并不高兴 :( 因为我看到了下一个问题,但我无法解决它。

  1. 我没有在我的设计中看到 Docker Hub。 docker 应用程序可以在不推送 docker hub 的情况下运行吗?如果没有,我可以在哪里添加到 Docker Hub?
  2. Jenkins 在生产服务器中运行。我认为 Jenkins 正在消耗 CPU 和 RAM 资源。我不喜欢这个。这是很好的做法吗?
  3. Jenkins 在一个 docker 容器上运行,这值得吗?如果没有。为什么有 Jenkins 的 docker 镜像?

如果我的设计不能用于生产,请给我一些建议。

提前致谢。

最佳答案

我在这里描述了一个更详细的 Vagrant/Docker 管道:Using Ansible,Jenkins and docker to build fast test environments

总结:

一个专业的Docker pipeline应该包括以下步骤:

  1. 基础镜像构建:从 Dockerfile 构建镜像,每次 Dockerfile 更改时触发此构建。结果可以上传到公共(public) Dockerhub 图像。例如。 Java JDK8 基础镜像:yourname/baseimageJRe8
  2. 基本镜像配置:构建配置的镜像。包括您的 java-maven-build Artifact 和配置文件。仅在此步骤中使用带有稳定标记的 Docker 镜像:yourname/baseImageJRe8:2.0-stable。结果必须上传到 PRIVATE Docker 注册表中,例如privateregistry.io/yourname/softwareStackMySoftware:2016-10-21-Build-210。
  3. 预配镜像部署:从主机上的私有(private)注册表中拉取镜像。请记住,只使用稳定的标记图像。通过环境变量添加主机特定配置或在 Docker Volumes 中添加配置文件。最后启动 Docker 容器。

专业的 Jenkins 设置应该包括:

  1. 一个 Jenkins 大师:作业配置。绝对没有构建处理器!
  2. 任意数量的 Jenkins 从站:构建 Docker 镜像。是的,这个自然会使用大量资源。

正如您可能听说过的那样,在 Docker 中运行 Docker 并不明智。因此,您需要一台 Docker-Machine(通过 cli docker-machine 设置)或其他安装了 Docker 的 VM 来构建您的 Docker 镜像。

此外,在持续集成环境中构建 docker 镜像会产生大量停止和失败的构建容器和(悬空)镜像。您应该在安全的环境中执行此操作,您可以在不影响生产部件的情况下安全地清洁机器。

但是有一个很大的误解就是Jenkins或者Docker里面的Jenkins slave是不能构建Docker镜像的。您只需在 Docker 镜像中安装 docker cli 并将命令发送到您的主机。例如,查看此 Jenkins swarm slave 图像 blacklabelops/swarm-dockerhost

关于maven - 在生产中使用 Jenkins 进行 Docker 工作流设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40164758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com