无法在AWS上使用ecs-cli部署docker

blu*_*inc 8 amazon-web-services amazon-ecs docker docker-compose

我在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
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

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.
Run Code Online (Sandbox Code Playgroud)

我不确定什么是任务定义或它需要什么.

Dol*_*cci 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评论(抱歉,已经关闭了标签,所以无法链接到它).

  • 那么解决方案是什么?我该怎么办? (2认同)

Rub*_*ada 5

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

drafter:
    build: .
Run Code Online (Sandbox Code Playgroud)

这是行不通的,你应该首先构建并推送图像:

docker build -t drafter .
docker tag drafter:latest somepath.amazonaws.com/drafter:latest
docker push somepath.amazonaws.com/drafter:latest
Run Code Online (Sandbox Code Playgroud)

所以之后做:

drafter:
    image: somepath.amazonaws.com/drafter:latest
Run Code Online (Sandbox Code Playgroud)

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