docker-compose push image to aws ecr

时间:2017-05-18 16:16:07

标签: docker docker-compose

是否可以让docker-compose构建图像并将其推送到远程仓库?现在我做了

docker-compose

构建然后我做

docker-compose config --services

循环遍历名称重建imagename和标签,然后执行

docker push blah

似乎有一种方法可以让它推动。

2 个答案:

答案 0 :(得分:9)

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

$ eval $(aws ecr get-login --no-include-email)

然后针对每个图像,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

答案 1 :(得分:3)

https://docs.docker.com/compose/compose-file/#build的文档中查看此代码段:

  

如果指定图像和构建,则编写已构建的名称   使用webapp和图像中指定的可选标记的图像:

build: ./dir
image: webapp:tag
  

这将生成一个名为的图像   webapp和tagged标签,由./dir构建。

您至少可以在图像名称中添加图像存储库。那么你应该可以使用docker-compose push更新版本的Docker Compose。