Maven 基于Jenkins的Docker工作流程设计

Maven 基于Jenkins的Docker工作流程设计,maven,jenkins,docker,production-environment,jenkins-workflow,Maven,Jenkins,Docker,Production Environment,Jenkins Workflow,我正在学习Docker几个星期,我认为是时候进行一个生产项目了(数字海洋)。我看到了一些工作流设计的问题。 我想将GitHub用于我的源代码。Jenkins负责continuos集成。Maven用于从Dockerfile构建战争和图像 这是我的设计 但我并不感到高兴:(因为我看到了接下来的问题,我无法解决它 我在我的设计中没有看到Docker Hub。Docker应用程序可以运行,而无需推送Docker Hub?如果没有,我可以在哪里添加Docker Hub Jenkins正在生产服务器上运行

我正在学习Docker几个星期,我认为是时候进行一个生产项目了(数字海洋)。我看到了一些工作流设计的问题。 我想将GitHub用于我的源代码。Jenkins负责continuos集成。Maven用于从Dockerfile构建战争和图像

这是我的设计

但我并不感到高兴:(因为我看到了接下来的问题,我无法解决它

  • 我在我的设计中没有看到Docker Hub。Docker应用程序可以运行,而无需推送Docker Hub?如果没有,我可以在哪里添加Docker Hub
  • Jenkins正在生产服务器上运行。我认为Jenkins正在消耗CPU和RAM的资源。我不喜欢这样。这是一种好的做法吗
  • Jenkins在一个docker容器上运行,这值得吗?如果不值得,为什么会有Jenkins的docker图像
  • 如果我的设计不能用于生产,请给出一些建议

    提前感谢。

    您的答案:

  • 您需要一些东西来存储生成的图像。稍后将从生产服务器中提取到哪里。您需要一个docker注册表。docker Hub只是一个具有许多功能的docker注册表。但是您可以安装一个私有docker注册表。这有一个官方容器

  • 不,这不是一个好的做法。让Jenkins单独呆在它的服务器上,这正是你暴露的原因、资源和对应用程序的干扰,比如开放端口

  • 不要在容器中使用jenkins,因为在docker中调用docker非常困难(不是不可能,但很困难)。除了docker之外,容器非常好。您可以通过
    apt install
    jenkins安装jenkins

  • 问候

  • 您需要一个docker注册表,这是存储生成的docker映像的地方。如果您想要私人映像,您可以自行托管一个或付费docker Hub。请参阅此处:

  • Jenkins不应该在生产环境中运行,你的代码应该在生产环境中运行。Jenkins是一个CI工具,可以帮助你构建代码。因此它需要在一个单独的“构建”环境中运行Jenkins应该构建您的代码,创建docker映像,并将它们存储在repo中。这取决于您的策略如何决定如何以及何时将其推出生产

  • 正如@Carlos所提到的,如果你想构建docker镜像,最好将Jenkins作为本地应用程序运行。为什么Jenkins会提供docker镜像?因为它更容易尝试,而且不是每个人都需要用他们构建的工件创建docker镜像


  • 我在这里描述了一个更复杂的流浪者/码头工人管道:

    Wrapup:

    专业Docker管道应包括以下步骤:

  • 基本映像构建:从Dockerfile构建映像,每次Dockerfile更改时触发此构建。结果可以上载到公共Dockerhub映像。例如,Java JDK8基本映像:yourname/baseimageJRe8
  • 基本映像配置:构建配置的映像。包括java maven构建工件和配置文件。仅用于此步骤稳定标记的Docker映像:yourname/BaseMageJRE8:2.0-stable。结果必须上载到私有Docker注册表中,例如privateregistry.io/yourname/softwareStackMySoftware:2016-10-21-Build-210。
  • 已设置映像部署:从主机上的私有注册表中提取映像。请记住,仅使用稳定的标记映像。通过环境变量添加主机特定的配置或在Docker卷中添加配置文件。最后启动Docker容器
  • 专业Jenkins设置应包括:

  • 詹金斯大师:作业配置。绝对没有构建处理器
  • 任意数量的詹金斯奴隶:建立码头工人形象。是的,这一个自然地使用了大量资源
  • 正如您可能听说的那样,在Docker中运行Docker是不明智的。因此,您需要一台Docker机器(通过cli Docker机器进行设置)或其他安装了Docker的VM来构建Docker映像

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


    但是存在一个很大的误解,即Jenkins或Docker中的Jenkins slave无法构建Docker映像。您只需在Docker映像中安装Docker cli并将命令发送到主机。例如,检查此Jenkins swarm slave映像。我无法理解您使用此映像所谈论的内容,听起来您是一个sking it docker hub有钩子?2.不,我个人认为jenkins不应该在您的生产环境中。3.与什么相比值得?拥有自己的VM?服务器?为什么不应该在容器中。1.我不知道docker hub是做什么的。只是为了共享docker文件?2.谢谢。3.与拥有自己的VM相比。如果您不知道什么是“Dock”er Hub',你为什么错过了设计中没有的它?docker容器比VM轻得多。考虑到你的问题,你应该考虑在使用itI设计解决方案之前继续学习docker是什么以及它是如何工作的。我对docker Hub有误解。我原以为它只存储了docker文件,但它存储了完整映像,也就是说,wildfly映像使用300 mb磁盘空间。是否正确?是否正确。在Dockerfile的情况下,Docker hub使用github存储它并进行自动生成