如何使用Jenkins pipeline发布Docker镜像

3
我有一个构建docker镜像的项目,我的情况是mongo镜像的扩展版本,其中包含(容器内)数据。我将此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个回答

4
首先,对于每个项目,您需要拥有一个特定的存储库,这可以帮助避免在将其推送到存储库时弄乱Docker镜像。您可以使用流水线脚本中的shell脚本/命令执行此处提到的所有命令。有多种方式可以将Docker镜像推送到存储库。例如,在auth-api中,我们创建了一个名为$ DOCKER_TAG的环境变量,并将其设置为构建创建时的时间。
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提交标记Docker镜像。[个人未经测试]


我太过于"Maven化",以至于没有想到使用简单的git标签或Jenkins构建编号,但是是的,我会简单地使用它!谢谢 - Antoine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接