簡體   English   中英

docker-compose 將鏡像推送到 aws ecr

[英]docker-compose push image to aws ecr

是否可以讓 docker-compose 既構建映像又將其推送到遠程存儲庫? 現在我做

docker-compose

建造然后我做

docker-compose config --services

遍歷名稱重建圖像名稱和標簽,然后執行

docker push blah

似乎必須有一種方法可以讓它也推動。

首先,您需要使用aws ecr get-login-password命令為 AWS ECR 生成登錄名。 在 bash 我做了:

$ eval $(aws ecr get-login-password)

然后對於每個鏡像,ecr 要求您在推送鏡像之前創建一個存儲庫。

在我的 docker-compose.yml 文件中,我有一系列服務:

version: '3'
services:
  scheduler:
    image: ${DOCKER_REGISTRY}/pipeline_scheduler
    build:
      context: ../
      dockerfile: ./docker/scheduler/Dockerfile
   startup:
     image: ${DOCKER_REGISTRY}/pipeline_setup
     build:
       context: ../
       dockerfile: ./docker/startup/Dockerfile
    # etc...

在我的 .env 文件中,我將 DOCKER_REGISTRY 設置為亞馬遜注冊表位置:

DOCKER_REGISTRY=919057965832.dkr.ecr.us-east-1.amazonaws.com

在 ecr 中創建存儲庫(再次使用 bash):

$ for r in $(grep 'image: \${DOCKER_REGISTRY}' docker-compose.yml | sed -e 's/^.*\///')
> do
>  aws ecr create-repository --repository-name "$r"
> done

(輸出將顯示包括帳戶和區域在內的注冊表信息,因此如果您願意,此時您可以檢查/設置您的 .env 文件)。

然后你可以用通常的方式構建和推送圖像:

$ docker-compose build
$ docker-compose push
 

https://docs.docker.com/compose/compose-file/compose-file-v3/#build的文檔中查看此片段:

如果您指定 image 和 build,那么 Compose 會使用 image 中指定的 webapp 和可選標簽命名構建的鏡像:

build: ./dir
image: webapp:tag

這將產生一個名為 webapp 和標記標簽的圖像,從 ./dir 構建。

您至少可以在圖像名稱中添加圖像存儲庫。 然后,您應該能夠將docker-compose push與較新版本的 Docker Compose 一起使用。

暫無
暫無

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

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