Только запустите контейнер Докера после того, как процесс в другом контейнере будет операционным

Я пытаюсь развернуть 3 контейнера Докера, имея отношение зависимости среди них (-> B-> C). Теперь, каждый контейнер, как предполагается, выполняет экземпляр Akka-брызг сверху экземпляра JVM.

Проблема: после обычных подходов оркестровки был запущен контейнер A, но веб-сервер не имел времени для начальной загрузки. Если это не в порядке перед контейнером B является операционным, контейнер B никогда не будет нагонять и т.д с C.

Я пробовал следующий подход в последнее время: совместно используйте объем данных между контейнерами; после того, как веб-сервер готов, сценарий помощника создаст пустой файл в объеме; запустите скрипт (через Новомодный сервис), который ищет пустой файл для разоблачения и разжигает следующий контейнер.

Однако использование сервиса наиболее вероятно причина к этой проблеме: выполнение

sudo docker run -d -it --name=backend -v ~/docker-test/:/docker-test -v ~/aux/:/aux ubuntu /bin/bash -c "</path/to/test/script>"

хорошо работает при выполнении просто в командной строке, но случайном сбое в сценарии, выполняемом Новомодным сервисом (получите сообщение "/bin/bash </path/to/test/script> : no such file or directory").

Кто-либо столкнулся с этим, также? Я с благодарностью приветствовал бы любые предложения для преодоления этого.

2
задан 20 March 2015 в 16:22
2 ответа

Почему бы не взглянуть на специально созданный оркестратор докеров, такой как flynn, deis, верфь и т. Д.?

Весьма список здесь

1
ответ дан 3 December 2019 в 11:40

Один из вариантов - просто подождать, пока откроется удаленный сетевой порт, что означает, что веб-сервер запущен. Приведенный ниже код основан на этот поток на SuperUser

#!/bin/sh
SERVICE_IP=`sudo docker inspect -f \"{{.NetworkSettings.IPAddress}}\" $CONTAINER_NAME`
SERVICE_PORT=80
while ! nc -vz \$SERVICE_IP \$SERVICE_PORT; do sleep 1; done

Это может быть объединено с оркестратором сборки контейнера (если этот оркестратор изначально не поддерживает ожидание «порт контейнера запущен» - я не знаю, что доступно в этом направлении).

1
ответ дан 3 December 2019 в 11:40

Теги

Похожие вопросы