持续集成案例学习:Docker、Java与Maven 【编者的话】对于使用Java技术栈的企业,Maven往往是其持续集成的核心工具,在当前的Docker化的运动中,要如何把Docker镜像的构建也加入到传统的Maven构建为基础的持续集成流程中呢?Alooma公司在本文中分享了他们使用Maven对Docker镜像构建进行持续集成的经验。 在Alooma,我们非常非常非常喜爱Docker。真的, 我们想完全容器化我们的应用。 虽然容器化应用有非常多的好处,但在这里,我并不是要说服你用Docker。我们只是认为你和我们一样喜欢这东西。 接下来,让我们谈谈Alooma是如何在生产环境使用Docker来精简开发流程并快速push代码的。 概述 Docker允许你把你的基础架构当作代码一样来对待。这个代码就是你的Dockerfile。 像其它代码一样,我们想要使用一个紧密的改变->提交->构建->测试的周期(一个完整的持续集成解决方案)。为了实现这个目标,我们需要构建一个流畅的DevOps流水线。 让我们把目标分解为更加详细的需求: 在版本控制系统中管理Dockerfile 在CI服务器上为每个commit构建Docker镜像 上传构件并打标签(这个构件要能够简单的部署) 我们的工作流 我们的DevOps流水线围绕GitHub、Jenkins和Maven构建。下面是它的工作流程: GitHub将repo的每一个push通知给Jenkins Jenkins触发一个Maven build Maven 构建所有的东西,包括Docker镜像 最后,Maven会把镜像推送到私有的Docker Registry。 这个工作流的好处是它允许我们能够很容易的为每个发布版本打标签(所有的commit都被构建并且在我们的Docker Registry中准备好了)。然后我们可以非常容易地通过pull和run这些Docker镜像进行部署。 事实上这个部署过程是非常简单的,我们通过发送一个命令给我们信任的Slack机器人:”Aloominion”(关于我们的机器人朋友的更多情况将在未来的文章中发表)开始这个过程。 你可能对这个工作流中的其他元素非常熟悉,因为它们都很常见。所以,让我们来深入了解如何使用Maven构建Docker镜像。 深入Docker 构建 Alooma是一个Java公司。我们已经使用Maven作为我们构建流水线的中心工具,所以很自然的想到把构建Docker的过程也加入到我们的Maven构建过程中去。 当搜索和Docker交互的Maven插件时,出现了3个选项。我们选择使用Spotify的maven-docker-plugin…