развертывание стека докеров зависит от

Данный компоновочный файл

version: '3.8'
services:
  whoami1:
    image: containous/whoami
    depends_on:
      - whoami2
  whoami2:
    image: containous/whoami

при развертывании в docker swarm docker stack deploy -c docker-compose.yaml test службы whoami1 и whoami2, похоже, запускаются в случайном порядке и игнорируют условие depends_on.

 docker stack deploy -c docker-compose.yaml test
Creating network test_default
Creating service test_whoami1
Creating service test_whoami2

Поддерживает ли Docker Swarm последовательность запуска службы через зависимости?


person Ben    schedule 24.06.2020    source источник


Ответы (1)


Нет, по крайней мере не встроенный.

Даже с depend_on whoami2 может быть еще не готов к взаимодействию с whoami1, потому что ему может потребоваться время для загрузки:

Однако для запуска Compose не ждет, пока контейнер будет «готов» (что бы это ни значило для вашего конкретного приложения), а только до тех пор, пока он не запустится. Для этого есть веская причина.

https://docs.docker.com/compose/startup-order/

Они намекают на две возможности проверить, готов ли whoami2.

Используйте такой инструмент, как ожидание, dockerize или ожидание, совместимое с sh. Это небольшие скрипты-оболочки, которые вы можете включить в образ вашего приложения для опроса заданного хоста и порта до тех пор, пока он не начнет принимать TCP-соединения.

И depend_on действительно игнорируется для роя докеров:

Есть несколько моментов, о которых следует помнить при использовании depend_on:

  • (...)
  • Опция depend_on игнорируется при развертывании стека в режиме swarm с файлом Compose версии 3.

https://docs.docker.com/compose/compose-file/#depends_on< /а>

person tameit    schedule 04.08.2020