如何使用Jenkins管道释放docker镜像

时间:2017-11-30 13:11:34

标签: docker jenkins release

我有一个构建docker镜像的项目,在我的例子中,它是mongo image的扩展,它包含(在容器内)数据。我使用这个mongo docker镜像进行集成测试。

目前,Maven并不习惯于构建项目。当我想发布这个图像的版本时,我在我的电脑上做这个并不理想。

我想保留一个包含我当前版本的docker镜像的文件(如pom.xml)。

我该怎么做,在我的项目中添加一个pom.xml用于版本化和maven-release-plugin,添加一个简单的version.txt,我在发布过程中更新了它?

或者是否有类似“docker.version”文件我不知道这样做?

我在GitHub上发布了我的项目示例:https://github.com/Ameausoone/mongodb-docker-with-data

1 个答案:

答案 0 :(得分:3)

首先要为您拥有的每个项目设置一个特定的回购。这有助于在将Docker镜像推送到存储库时弄乱它。

您可以使用管道脚本中的shell脚本/命令来执行此处提到的所有命令。

将docker镜像推送到存储库有多种方法。

  

根据时间和内部版本号进行标记:

以auth-api为例,我们在jenkins中创建一个名为$ DOCKER_TAG的env变量,并将其设置为创建构建的时间:

DOCKER_TAG: $(date +%Y%m%d).$BUILD_NUMBER 

$ BUILD_NUMBER是Jenkins工作的一部分。现在标记docker镜像如下:

docker tag DOCKER_IMAGE auth-api/<DOCKER_IMAGE>:<DOCKER_TAG>

(假设您已经构建了docker镜像并在标记之后将其推送到存储库中。)

注意:Docker只允许在与REPO-NAME匹配的情况下推送图像。

有助于找出docker图像创建日期和时间以及内部版本号。此映像可以部署到dev,test,prod等不同的环境中。

  

根据环境进行标记

根据部署环境标记docker镜像,即dev,test,prod。 使用withenv在管道脚本中配置环境变量,可能如下所示:

docker tag DOCKER_IMAGE auth-api/<DOCKER_IMAGE>:$ENV

这将有助于部署特定的docker镜像。

你甚至可以根据git commit标记docker镜像。[未亲自测试]