2017-08-16 71 views
1

信封AWS精英 - 所有的容器就會被殺死(停止)如果他們中的一個退出或殺死

  • AWS ECS
  • 多克爾版本17.03.1策,建立7392c3b/17.03.1策

問題

我們已經3個泊塢窗集裝箱我們的應用程序。

  • DB
  • DB-種子(DB遷移腳本亞軍)
  • 應用服務器

DB應用服務器得到啓動,但是一旦DB種子出口(因爲它應該)在運行一些遷移腳本之後。剩下的容器死掉(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問題或功能(全部或沒有)?

回答

2

您在任務定義中缺少essential參數。不幸的是,我不知道通過docker-compose插入此參數的方法,但這是導致您在最終ECS任務中的行爲的原因。從文檔:

如果一個集裝箱的主要參數被標記爲true,而容器失敗或停止以任何理由,所有其他容器屬於任務的一部分被停止。如果容器的基本參數被標記爲false,那麼它的失敗不會影響任務中其餘的容器。如果省略此參數,則認爲容器是必需的。

注意,參數默認true在省略它。鑑於您的所有任務都缺少參數,因此當它們中的一個退出時,預計它們的行爲將會停止在全部之間停止。

更多信息,請ECS任務定義參數文件中找到:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment

我知道這是不是一個確切的答案,但我希望它有助於確定如何解決您的問題。