Docker compose 不会推送到 ECR



我正试图在docker compose up命令上设置部署,它将构建必要的映像,将它们推送到ECR并在ECS上启动所有内容。

我已经做了什么。

  1. 创建并切换到aws上下文:
docker context create ecs aws
docker context use aws
  1. 创建docker-compose.yml文件:
version: '3.9'
services:
frontend:
build: ./frontend
image: <my_aws_id>.dkr.ecr.<region>.amazonaws.com/frontend:latest
backend:
build: ./backend
image: <my_aws_id>.dkr.ecr.<region>.amazonaws.com/backend:latest
nginx:
build: ./nginx
image: <my_aws_id>.dkr.ecr.<region>.amazonaws.com/nginx:latest
ports:
- 80:80

在阅读了一堆手册后,据我所知,命令docker compose up应该:

<
  1. 构建图像/gh>
  2. 将它们推送到ECR
  3. 在ECS上创建集群和必要的任务
  4. <
  5. 启动容器/gh>

相反,我有错误,告诉我这些图像没有找到。是的,我的ECR仓库是空的,但我希望docker compose up构建并将图像推送到该仓库,而不仅仅是试图从ECR获取它们。

我做错了什么?

该命令的目的是将服务up带到本地:

❯ docker-compose --help
...
create             Create services
push               Push service images
start              Start services
up                 Create and start containers

根据上下文,它也可以构建和拉取图像,创建或更新容器,当然,启动服务,但它不push。如果您打算使用docker-compose来推送映像,我建议您手动运行构建和推送命令:

docker-compose build
docker-compose push

docker compose中的ecs上下文不允许构建/推送。从今天开始,你需要在不同的环境之间稍微跳跃一下,以达到你想要做的事情。这是一个示例(嵌入到一个完全不同的项目中),它显示了该过程。

简而言之(也是为了子孙后代):

export ACCOUNTNUMBER=<your account>
export MYREGION=<your region>
aws ecr get-login-password --region $MYREGION | docker login --password-stdin --username AWS $ECR_ECSWORKER_REPO_URI 
docker context use default
docker compose build
docker compose push
docker context use myecscontext
docker compose up

[上面假设myecscontext上下文已经用docker context create ecs myecscontext创建]

相关内容

  • 没有找到相关文章

最新更新