【问题标题】:How to release docker image with Jenkins pipeline如何使用 Jenkins 管道发布 docker 镜像
【发布时间】:2018-05-14 10:26:02
【问题描述】:

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


    【解决方案1】:

    首先要为您拥有的每个项目都有一个特定的存储库。这有助于在将 docker 镜像推送到存储库时不会弄乱它。

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

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

    基于时间和内部版本号的标记:

    以 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 映像的创建日期和时间以及内部版本号。此映像可以部署到不同的环境,例如 dev、test、prod。

    基于环境的标记

    根据部署环境标记 docker 镜像,即 dev、test、prod。 在管道脚本中配置一个环境变量,使用withenv,它可能看起来像这样:

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

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

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

    【讨论】:

    • 我太“Mavenize”了,无法简单地使用 git tag 或 jenkins 内部版本号,但是是的,我会简单地使用它!谢谢
    猜你喜欢
    • 2017-07-16
    • 2018-06-15
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2017-11-04
    • 2020-03-28
    • 2018-06-19
    • 1970-01-01
    相关资源
    最近更新 更多