首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-将推送镜像合成到aws ecr

docker-将推送镜像合成到aws ecr
EN

Stack Overflow用户
提问于 2017-05-19 00:16:07
回答 2查看 18.6K关注 0票数 11

是否可以让docker-compose同时构建映像并将其推送到远程存储库?现在我做的是

docker-compose

构建,然后我做

docker-compose config --services

循环遍历名称,重新构造imagename和标记,然后执行

docker push blah

似乎一定有一种方法可以让它也这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-19 00:34:28

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

如果既指定映像又指定构建,则Compose将使用webapp和在image中指定的可选标记来命名构建的映像:

代码语言:javascript
复制
build: ./dir
image: webapp:tag

这将产生一个名为webapp和标签标签的图像,它是从./dir构建的。

您至少可以在镜像名称中添加镜像存储库。然后你就可以在新版本的Docker Compose中使用docker-compose push了。

票数 4
EN

Stack Overflow用户

发布于 2018-08-03 06:38:24

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

代码语言:javascript
复制
$ eval $(aws ecr get-login-password)

然后,对于每个镜像,ecr要求您在推送镜像之前创建一个存储库。

在我的docker-compose.yml文件中,我有一系列类似以下内容的服务:

代码语言:javascript
复制
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设置为亚马逊注册表位置:

代码语言:javascript
复制
DOCKER_REGISTRY=919057965832.dkr.ecr.us-east-1.amazonaws.com

要在ecr中创建存储库(再次使用bash ):

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

(输出将显示注册表信息,包括帐户和区域,因此如果您愿意,可以在此时检查/设置.env文件)。

然后,您可以按照通常的方式构建和推送镜像:

代码语言:javascript
复制
$ docker-compose build
$ docker-compose push
票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44052999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档