Docker compose 不会推送到 ECR
Docker compose won't push to ECR
我正在尝试设置部署,其中 docker compose up
命令将构建必要的图像,将它们推送到 ECR 并在 ECS 上启动所有内容。
到目前为止我做了什么。
- 已创建并切换到 aws 上下文:
docker context create ecs aws
docker context use aws
- 已创建
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
应该:
- 构建映像
- 将它们推送到 ECR
- 在 ECS 上创建集群和必要的任务
- 启动容器
相反,我遇到了错误,告诉我找不到这些图像。是的,我的 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
上下文不允许 build/push。从今天开始,您需要在上下文之间略微跳动以实现您想要做的事情。 This 是一个示例(嵌入到一个完全不同的项目中),它显示了该过程。
简而言之(为了后代):
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
]
创建了
我正在尝试设置部署,其中 docker compose up
命令将构建必要的图像,将它们推送到 ECR 并在 ECS 上启动所有内容。
到目前为止我做了什么。
- 已创建并切换到 aws 上下文:
docker context create ecs aws
docker context use aws
- 已创建
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
应该:
- 构建映像
- 将它们推送到 ECR
- 在 ECS 上创建集群和必要的任务
- 启动容器
相反,我遇到了错误,告诉我找不到这些图像。是的,我的 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
上下文不允许 build/push。从今天开始,您需要在上下文之间略微跳动以实现您想要做的事情。 This 是一个示例(嵌入到一个完全不同的项目中),它显示了该过程。
简而言之(为了后代):
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
]