2016-07-04 54 views
4

我已在ECS回购,已经创建了使用ECS-CLI麻烦与AWS部署搬运工ECS-CLI

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

这里是我的搬运工,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. 

我不知道有什么任务定义或需要什么。

+1

注ECS-CLI撰写和码头工人的撰写是不相同的,所以你应该仔细检查用于ECS的语法和你的YAML文件。 (完整性检查 - 我假设你的配置文件确实以.yaml结尾?) – ldg

+0

@ldg编辑了yml。这是一个错误的问题。 –

+1

服务和任务是ecs的重要组成部分。您应该能够在ecs服务上找到相同的文档。 ecs-cli撰写应该为您创建任务和定义。从好像ECS错误,是找到容器映像为空..你可以添加你泊坞窗撰写阳明..注:ECS CLI组成不支持撰写第2版,只支持泊坞窗的一个子集组成1级的命令。这里是单证:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cmd-ecs-cli-compose.html – Shibashis

回答

6

据我了解,ECS-CLI具有完整的码头工人撰写的文件语法的支持非常有限。例如,你应该看到WARN[0000] Skipping unsupported YAML option for service... option name=build service name drafter

的原因是你使用的是希望所有的服务是图像ECS-CLI的版本警告。因此,需要drafter的图像,您可以通过docker build或传统docker-compose调用产生(但那么你就需要保持撰写文件的两个版本 - 传统之一和ECS兼容的一

注意:这听起来像他们可能计划在未来支持build,至少根据我之前看到的一个github评论(对不起,已关闭此标签,因此无法链接到它)

+0

那么解决方案是什么?我怎么去解决它? – Dror

+0

@Dror - 我放弃尝试使用ECS,所以我的知识是有限的,而且我不确定ecs-cli自从我发布后是否发生了变化,但如果没有,我相信您只是创建本地计划容器的图像(无AWS工具),然后相应地使用它们。 –

+0

我也收敛到手动设置安装了Docker的EC2节点,并从那里拿它 – Dror

3

问题在于您的撰写文件:

drafter: 
    build: . 

这将无法正常工作,你s那些经过这么

docker build -t drafter . 
docker tag drafter:latest somepath.amazonaws.com/drafter:latest 
docker push somepath.amazonaws.com/drafter:latest 

:HOULD先建,推动图像

drafter: 
    image: somepath.amazonaws.com/drafter:latest 

注意,最新的可能也是一个版本。

+0

我试过这个,但仍然无法使它工作。请参阅[问题](https://stackoverflow.com/q/47711985/671013) – Dror