环境

  • AWS ecs
  • Docker 版本 17.03.1-ce,构建 7392c3b/17.03.1-ce

  • 问题

    我们的应用程序中有 3 个 docker 容器。
  • 数据库
  • DB-seed(数据库迁移脚本运行程序)
  • 应用服务器

  • DB 应用程序服务器 启动,但是一旦 DB-seed 在运行一些迁移脚本后退出(应该如此)。其余的容器死亡(停止)。

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

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

    我们的 docker 撰写文件
    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 中的问题还是功能(全部或无)?

    最佳答案

    您的任务定义中缺少 essential 参数。不幸的是,我不知道通过 docker-compose 插入此参数的方法,但这就是导致您在生成的 ECS 任务中出现行为的原因。从文档:



    请注意,该参数在省略时默认为 true。鉴于您的所有任务都缺少该参数,当其中一个任务退出时,它们都将停止是预期的行为。

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

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

    关于docker - AWS ecs - 如果其中一个容器退出或被杀死,所有容器都会被杀死(停止),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45716832/

    10-13 08:01