用ecs-cli在AWS上部署Docker时遇到困难

我有一个ECS的回购,已经使用ecs-cli创build了一个集群

ecs-cli configure --region=us-west-2 --profile=<MY PROFILE> --cluster=cluster-1

ecs-cli up --capability-iam --keypair=<MY KEYPAIR>

但是那么执行组合文件的下一步就是失败

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. 

我不确定什么任务定义或需要什么。

据我所知,ecs-cli对完整的Docker Compose文件语法的支持非常有限。 例如,您应该看到有关WARN[0000] Skipping unsupported YAML option for service... option name=build service name drafter警告WARN[0000] Skipping unsupported YAML option for service... option name=build service name drafter

原因是你正在使用的ecs-cli版本期望所有的服务都是图像。 因此, drafter需要一个图像,你可以通过docker build或传统的docker-compose调用产生图像(但是你需要维护两个版本的组合文件 – 传统的和兼容的。

注:这听起来像他们可能计划在未来的build支持,至less根据我之前看到的一个github评论(对不起,已经closures标签,所以不能链接到它)。

问题出在你的撰写文件中:

 drafter: build: . 

这将不起作用,你应该先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 

注意最新也可以是一个版本。