AWS ecs - 如果其中一个容器退出或被杀死,则所有容器都被杀死(STOPPED)

时间:2017-08-16 14:51:33

标签: docker amazon-ec2 docker-compose amazon-ecs

的Env

  • AWS ecs
  • Docker版本17.03.1-ce,内部版本7392c3b / 17.03.1-ce

问题

我们的应用程序中有3个docker容器。

  • DB
  • DB-seed(数据库迁移脚本运行器)
  • app-server
数据库 app-server 启动,但是一旦 数据库 - 种子 在运行一些迁移脚本后退出(应该如此)。其余的容器死亡(STOP)。

这种奇怪的行为只发生在AWS ecs中,而不会发生在我本地的docker设置中。

此外,杀死任何容器,停止AWS-ECS中的其他容器。

我们的码头撰写文件

version: '2'

services:
  db:
    image: db-image
    hostname: db
    cpu_shares: 50
    mem_limit: 3758096384
    volumes:
     - /data/db:/data/db
    ports:
     - "27017:27017"
  db-seed:
    image:db-seed
    cpu_shares: 10
    mem_limit: 504288000
    links:
    - db
  web:
    image: server-image
    cpu_shares: 50
    mem_limit: 3758096384
    ports:
     - "8080:8080"
    links:
    - db

这是AWS ecs或功能(全部或全部)中的问题吗?

1 个答案:

答案 0 :(得分:4)

您在任务定义中缺少SELECT mac.mac_id,mac.mac,mac.mac_type,record.soc_id from mso_charter.mac where record.soc_id in ('C:\Users\xyz\worldbox2_Prod_09-17-2017.txt') join mso_charter.record on mac.record_id = record.header_id 参数。不幸的是,我不知道通过essential插入此参数的方法,但这是导致您在生成的ECS任务中的行为的原因。来自文档:

  

如果容器的基本参数标记为docker-compose,并且该容器因任何原因失败或停止,则停止作为该任务一部分的所有其他容器。如果容器的基本参数标记为true,则其失败不会影响任务中的其余容器。如果省略此参数,则假定容器是必需的。

请注意,省略时参数默认false。如果您的所有任务都缺少参数,那么当其中一个任务退出时, all 的预期行为就会停止。

可以在ECS任务定义参数文档中找到更多信息:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment

我知道这不是一个确切的答案,但我希望它有助于确定如何解决您的问题。