gpt4 book ai didi

docker - Azure devops发布管道-在环境之间共享的特定docker镜像

转载 作者:行者123 更新时间:2023-12-02 19:53:27 25 4
gpt4 key购买 nike

我有一个Web应用程序,我想使用azure管道进行dockerise和发布。
我已经可以构建和测试,但是在发布它方面却很挣扎。

构建管道(在由VSTS代理控制的构建服务器上):

1) Build using .net core
2) Run unit tests using .net core
3) Build docker image
4) Push to registry

然后,这会自动触发我的发布管道。发布管道有两个阶段,即 create releasedeploy release
非docker方案是创建DLL( create release)并部署在Web服务器上( deploy release)。我不确定这是否/如何适用于Docker应用程序。

发布管道(在每个环境服务器上运行的单独的发布代理):
Artifact (CI Build) => DEV => SIT => UAT => PROD

在每种环境中,我都会:
1) stop and remove old image/container
2) pull 'latest' tag from repository
3) run new image in docker container.

问题:
如何创建单个发布特定的docker镜像,然后将其推送到每个环境,以及如何将 create releasedeploy release分开以完成此任务?

问题:
  • 如果我只是在每次拉取中拉一张图像,那么我只是得到最新的标签,我不确定是否可以用发行版号标记注册表图像?
    使用发行版编号/名称进行标记的原因是,以便在必要时可以重新部署以前的发行版。
  • 我想防止将所有发行镜像存储在DEV / SIT / UAT / PROD服务器上。发布镜像需要存在于注册表服务器中,以便我有一个中心位置可以将它们从中取出。
  • 最佳答案

    解决您的问题

    您的create-release作业可能如下所示。

    echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
    docker build -t $CI_REGISTRY_IMAGE -t $CI_REGISTRY_IMAGE:$VERSION .
    docker push $CI_REGISTRY_IMAGE
    docker push $CI_REGISTRY_IMAGE:$VERSION

    您的 deploy release作业可能如下所示。
    echo $DOCKER_HUB_PASSWORD | docker login -u $DOCKER_HUB_USER --password-stdin $REGISTRY_URL
    docker pull $CI_REGISTRY_IMAGE
    docker pull $CI_REGISTRY_IMAGE:$VERSION
    docker tag $CI_REGISTRY_IMAGE $DOCKER_HUB_USER/crystal-skull
    docker tag $CI_REGISTRY_IMAGE:$VERSION $DOCKER_HUB_USER/$IMAGE_NAME:$VERSION
    docker push $DOCKER_HUB_USER/$IMAGE_NAME
    docker push $DOCKER_HUB_USER/$IMAGE_NAME:$VERSION

    解决您的问题

    是的,您可以使用特定的发行版号标记注册表镜像。这是包括Docker Hub在内的Docker注册中心的标准配置。

    关于docker - Azure devops发布管道-在环境之间共享的特定docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59234054/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com