用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
注意最新也可以是一个版本。