利用Jenkins和Docker对Maven项目进行持续集成和交付


在这篇文章中,我们来看看使用Jenkins和Docker对Maven项目进行持续集成。我上一篇文章《Spring Boot中的多个数据库》中的项目将由Jenkins构建和部署并运行。Spring Boot中的多个数据库的代码库在这里

首先,我将讨论我用来构建Maven项目和创建Docker镜像的方法。通常有两种方法。

1. 使用Docker的Maven插件,可以将Docker命令作为任务和目标运行。

2. 让Docker构建Maven项目。

我认为第一种方法的问题是,它会产生一种依赖性,即确保你的Maven插件是最新的,尤其是当Docker API发生变化时。我选择了第二种方法,因为这样我们就把Maven和Docker解耦了。这是一种反转控制(IoC)--Maven不应该知道Docker的情况,因为它的重点是项目。换句话说,Docker是可以运行我们的应用的众多环境之一。如果我们有其他平台可以运行,这意味着我们的POM必须为每个人准备插件。所以我将使用Docker构建项目。

在我们的IDE中,我们打开我们的项目,我们创建以下Dockerfile。

image

这个Dockerfile是一个多阶段的构建。首先,我使用一个Maven容器来构建我的镜像,即maven3.5.2-jdk-8-apline。

需要注意的是,Docker正在运行Maven命令来构建和打包应用程序。

之后,我使用openjdk:8-jdk-apline镜像来构建和创建项目的容器。最后,我公开了8080端口,我的应用程序将监听这个端口。

在Jenkins中,我们通过以下步骤创建构建计划。我列出了所有的截图,以便你能看到所涉及的命令。

image

image

image

最后一条命令 prune ,将删除多阶段构建中使用的、由Docker创建的任何临时容器。这就像一个清理操作。如果我们的容器启动失败,出现错误,它也会被删除。这减少了在Docker中清理容器和镜像注册表的手动工作。然而,应该谨慎使用它。

Dockerfile是上面分享的GitHub repos链接。