Ожидание готовности контейнера из другого модуля легко выполняется с помощью контейнера init, который выполнит проверку (как правило, скручивание на конечной точке работоспособности или что-либо еще) до получения приемлемого ответа.На контейнере в том же модуле это решение не будет работать, но вы можете использовать часть спецификации контейнера command
, которая может достичь чего-то очень похожего.
Для службы HTTP:
command:
- '/bin/sh'
- '-c'
- >
set -ex;
until curl --fail --connect-timeout 5 http://localhost:8080/login; do sleep 2; done
&& <start command>
Вы можете легко добиться того же для базы данных postgres:
command:
- '/bin/bash'
- >
until pg_isready --host localhost -p 5432; do sleep 2; done
&& bash /sql/00-postgres-configuration.sh
Это хороший пример, вы должны определить лучший способ обнаружить, работает ли ваш другой контейнер.
Взгляните на https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/, чтобы увидеть, как вы можете указать command
для пакета.