117 votes

Quelle est l'alternative à la forme de condition de dépend de la version 3 composée de dockers ?

docker-composer 2.1 offre la fonctionnalité intéressante pour spécifier un condition avec depends_on. L'actuel docker-composer les états de documentation:

La Version 3 ne supporte plus l'état de forme de depends_on.

Malheureusement, la documentation ne permet pas d'expliquer pourquoi l' condition formulaire a été enlevé et est dépourvu de toute spécifique recommondation sur la façon de mettre en œuvre des comportements à l'aide de la V3 à la hausse.

58voto

Alkaline Points 1625

Il y a eu un mouvement loin de spécifier des dépendances de récipient dans composer. Ils ne sont valables qu'au moment du démarrage et ne fonctionnent pas lorsque les conteneurs dépendants sont redémarrés au moment de l'exécution. Au lieu de cela, chaque conteneur devrait inclure un mécanisme pour réessayer de se reconnecter aux services dépendants lorsque la connexion est supprimée. De nombreuses bibliothèques pour se connecter à des bases de données ou des services REST API ont configurable sa mise en œil intégrée. J'examinerais ça. Il est nécessaire pour le code de production de toute façon.

20voto

jkukul Points 1930

Il y a quelques outils externes qui vous permettent d'imiter ce comportement. Par exemple, avec la dockerize outil, vous pouvez envelopper votre CMD ou ENTRYPOINT avec dockerize -wait et qui empêche l'exécution de votre application jusqu'à ce que les services spécifiés sont prêts.

Si votre menu fixe-composition de fichier utilisé pour ressembler à ceci:

version: '2.1'
services:
  kafka:
    image: spotify/kafka
    healthcheck:
      test: nc -z localhost 9092
  webapp:
     image: foo/bar # your image
     healthcheck:
       test: curl -f http://localhost:8080
  tests:
     image: bar/foo # your image
     command: YOUR_TEST_COMMAND
     depends_on:
       kafka:
         condition: service_healthy
       webapp:
         condition: service_healthy

ensuite, vous pouvez utiliser dockerize votre v3 composer fichier comme ceci:

version: '3.0'
services:
  kafka:
    image: spotify/kafka
  webapp:
     image: foo/bar # your image
  tests:
     image: bar/foo # your image
     command: dockerize -wait tcp://kafka:9092 -wait web://webapp:8080 YOUR_TEST_COMMAND

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X