Можно ли использовать и переменную окружения как проверку работоспособности докера - PullRequest
1 голос
/ 04 июля 2019

У меня есть собственное изображение mysql. Когда мы запускаем контейнер, он загружает дамп mysql из нашего артефакта для загрузки некоторых данных. У меня есть следующая проверка работоспособности в моей команде запуска докера:

--health-cmd='mysql -u myusername -pMyPassword'

Но я хочу установить работоспособность контейнера после импорта данных, что обычно занимает около 5 минут. Возможно, у меня возникла идея установить переменную окружения, но в этом случае я бы не знал, какой будет команда health-cmd. Или, может быть, есть лучший способ сделать это?

Я только начинаю с докера, мои знания очень ограничены.

1 Ответ

1 голос
/ 04 июля 2019

Простым решением было бы обновить специальную таблицу (скажем, status), когда загрузка будет завершена. Затем замените команду проверки работоспособности сценарием bash

#!/usr/bin/env bash
# the table status is updated when the load finishes
SQLSTMT="SELECT status FROM myDatabase.status WHERE status='done'"

# execute the SQL script and get the result
STATUS=`mysql -AN -e "${SQLSTMT}"`

# return exit code 0 (container healthy) if status is done,
# otherwise exit code 1 (container is not healthy)
[ "$STATUS" == 'done' ]

health-cmd становится:

--health-cmd='/path/to/script.sh'

Это должно работать, даже если вы создадите таблицу после завершения процесса загрузки.

Другой вариант - создать новый файл (даже пустой) после завершения загрузки. Команда работоспособности проверит наличие файла:

--health-cmd="/usr/bin/test -f /path/to/file" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...