pricing hub docker docker-compose

hub - ¿Cuál es la alternativa para condicionar la forma de depende de la versión 3 de docker-compose?



docker search (2)

Ha habido un alejamiento de la especificación de dependencias de contenedores en la composición. Solo son válidos en el momento del inicio y no funcionan cuando los contenedores dependientes se reinician en el tiempo de ejecución. En su lugar, cada contenedor debe incluir un mecanismo para volver a intentar conectarse a los servicios dependientes cuando se interrumpa la conexión. Muchas bibliotecas para conectarse a bases de datos o servicios de API REST tienen reintentos integrados configurables. Yo miraría en eso. Es necesario para el código de producción de todos modos.

docker-compose 2.1 ofrece la característica agradable para especificar una condition con depends_on . La documentación actual de la ventana acoplable-componer establece:

La versión 3 ya no es compatible con el formato de condición Depender_on.

Desafortunadamente, la documentation no explica por qué se eliminó el formulario de la condition y falta alguna recomendación específica sobre cómo implementar ese comportamiento utilizando V3 hacia arriba.


Hay algunas herramientas externas que te permiten imitar este comportamiento. Por ejemplo, con la herramienta dockerize puede envolver su CMD o ENTRYPOINT con dockerize -wait y eso evitará que se ejecute su aplicación hasta que los servicios especificados estén listos.

Si su archivo de composición acoplable solía verse así:

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

entonces puede usar dockerize en su archivo de composición v3 como este:

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