我在ECS上有一个回购,使用ecs-cli创建了一个集群
ecs-cli configure --region=us-west-2 --profile=<MY PROFILE> --cluster=cluster-1
ecs-cli up --capability-iam --keypair=<MY KEYPAIR>
然后执行compose文件的下一步是失败时
ecs-cli compose --file docker-compose.yml --project-name drafter-project service up
这是我的docker-compose.yml文件:
version: '2'
services:
rabbit:
image: rabbitmq
hostname: rabbit1
ports:
- 5672:5672
- 15672:15672
drafter:
build: .
depends_on:
- rabbit
我得到的错误是:
Error registering task definition
error=ClientException: Container.image should not be null or empty.
Create task definition failed
error=ClientException: Container.image should not be null or empty.
我不确定任务定义是什么或需要什么。
答案 0 :(得分:7)
根据我的理解,ecs-cli对完整的Docker Compose文件语法的支持非常有限。例如,您应该看到有关WARN[0000] Skipping unsupported YAML option for service... option name=build service name drafter
原因是您正在使用的ecs-cli版本期望所有服务都是图像。因此,drafter
需要一张图片,您可以通过docker build
或传统的docker-compose
电话生成该图片(但是您需要维护两个版本的撰写文件 - 传统的和ecs兼容的。
注意:听起来他们将来可能会计划build
支持,至少根据我之前看到的一个github评论(抱歉,已经关闭了标签,所以无法链接到它)
答案 1 :(得分:4)
问题出在您的撰写文件中:
drafter:
build: .
不起作用,你应该首先构建并推送图像:
docker build -t drafter .
docker tag drafter:latest somepath.amazonaws.com/drafter:latest
docker push somepath.amazonaws.com/drafter:latest
所以在那之后:
drafter:
image: somepath.amazonaws.com/drafter:latest
请注意,最新版本也可能是版本。