2017-08-16 5 views
1

AWS ecs - Tous les conteneurs est tué (stopped) si l'un d'entre eux sort ou tués

Env
  • AWS ecs
  • Docker Version 17.03.1-ce, construire 7392c3b/17.03.1-ce

problème

Nous avons 3 conteneurs docker dans notre application.

  • DB
  • DB-graine (coureur de script de migration DB)
  • app-serveur

DB et app-serveur permet de démarrer, mais une fois que la DB-seed sorties (comme il se doit) après avoir exécuté certains scripts de migration. Le reste des conteneurs meurent (STOP).

Ce comportement étrange se produit uniquement dans AWS ecs et jamais dans ma configuration de docker locale. En outre, en tuant l'un des conteneurs, arrête les autres conteneurs dans AWS-ECS.

Notre fichier Compose 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 

Est-ce un problème dans AWS ecs ou une fonction (tout ou rien)?

Répondre

2

Il vous manque le paramètre essential dans la définition de votre tâche. Malheureusement, je ne suis pas au courant d'un moyen d'insérer ce paramètre via docker-compose, mais c'est ce qui provoque votre comportement dans la tâche ECS qui en résulte. De la documentation:

Si le paramètre essentiel d'un conteneur est marqué comme true, et que le conteneur ne ou arrête pour une raison quelconque, tous les autres conteneurs qui font partie de la tâche sont arrêtés. Si le paramètre essentiel d'un conteneur est marqué false, sa défaillance n'affecte pas le reste des conteneurs dans une tâche. Si ce paramètre est omis, un conteneur est supposé essentiel.

Notez que le paramètre par défaut à true quand il est omis. Étant donné que toutes vos tâches manquent le paramètre, il est attendu tous les comportements de s'arrêter lorsque l'un d'entre eux se termine.

Plus d'informations peuvent être trouvées dans la définition des tâches ECS documentation Paramètres: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment

je sais que ce n'est pas une réponse exacte, mais je l'espère, il aide à déterminer comment résoudre votre problème.