docker - 如何使用 Jenkins 管道发布 docker 镜像

标签 docker jenkins release

我有一个构建 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

最佳答案

第一件事是为您拥有的每个项目拥有一个特定的存储库。这有助于在将 Docker 镜像推送到存储库时不会弄乱它。

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

可以通过多种方式将 Docker 镜像推送到存储库。

Tagging based on Time and Build Number:

以 auth-api 为例,我们在 jenkins 中创建一个名为 $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 镜像的创建日期和时间以及内部版本号。该镜像可以部署到不同的环境,如开发、测试、生产。

Tagging based on the environment

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

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

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

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

关于docker - 如何使用 Jenkins 管道发布 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574344/

相关文章:

ubuntu - Docker 无法运行

jenkins - 在从属节点上运行构建时,Docker为什么有用?

iOS:未发布的调度队列

android - 丢失 keystore 文件后重新使用 Play 商店中的应用程序 ID

symfony - 打开失败 required/symfony/phpunit-bridge/bootstrap.php

Docker 群服务环境变量在容器内不可见

docker - 限制对 Docker Hub 的访问

eclipse - 将基于eclipse/cdt的构建集成到持续集成中

continuous-integration - HTTP错误: 503 . ..访问/jenkins。原因:服务不可用

git - 如何发布删除 git flow 中的一些功能