簡體   English   中英

鏡像推送到 ECR 時如何部署到 ECS?

[英]How to deploy to ECS when an image is pushed to ECR?

我的用例非常簡單,但我找到的所有教程都完成了整個推送 → 構建 → 推送到 ecr → 部署。 我已經有一個 bitbucket 管道,它構建並將圖像推送到 ECR,我需要某種檢測新圖像被推送的方法,然后用新圖像更新我的 ECS 任務。 到目前為止,這就是我的CodePipeline管道的樣子:

在此處輸入圖像描述

這就是我的部署步驟的樣子:

在此處輸入圖像描述

這是我得到的錯誤:

在此處輸入圖像描述

此外,如何持續更新我的 ECS 任務以使用最新的鏡像?

當您使用 ECR 作為源時,ECR 會生成一個名為“imageDetail.json”的工件文件,其格式為 [1]。 但是 ECS 部署階段需要一個名為“imagedefinitions.json”的文件,其格式不同 [2]。

要提供所需的文件,請在源代碼和部署之間添加一個 CodeBuild 步驟,並使用以下構建規范:(基本上轉換文件)

version: 0.2
phases:
    install:
        runtime-versions:
            docker: 18
    build:
        commands:
            - apt-get install jq -y
            - ContainerName="todo"
            - ImageURI=$(cat imageDetail.json | jq -r '.ImageURI')
            - printf '[{"name":"CONTAINER_NAME","imageUri":"IMAGE_URI"}]' > imagedefinitions.json
            - sed -i -e "s|CONTAINER_NAME|$ContainerName|g" imagedefinitions.json
            - sed -i -e "s|IMAGE_URI|$ImageURI|g" imagedefinitions.json
            - cat imagedefinitions.json

artifacts:
    files:
        - imagedefinitions.json

重要 1:更新任務定義中存在的“ContainerName”

重要2:確保部署操作的輸入工件是BuildArtifact。

  1. https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html#file-reference-ecs-bluegreen
  2. https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html#pipelines-create-image-definitions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM