Я развертываю несколько различных контейнеров докеров, причем mysql является первым. Я хочу запускать скрипты, как только база данных, и приступить к созданию других контейнеров. Сценарий был неудачным, поскольку он пытался запустить, когда сценарий точки входа, который устанавливает mysql (из этого официального контейнера mysql), все еще работает.
sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=MY_ROOT_PASS -p 3306:3306 -d mysql
[..] wait for mysql to be ready [..]
mysql -h 127.0.0.1 -P 3306 -u root --password=MY_ROOT_PASS < MY_SQL_SCRIPT.sql
Есть ли способ дождаться сигнала ввода-вывода mysql-скрипта, который заканчивается внутри контейнера докеров? Спящий сон кажется субоптимальным решением.
EDIT: Пошел для сценария bash как это. Не самая элегантная и любопытная грубая сила, но работает как шарм. Может быть, кто-то найдет это полезным.
OUTPUT="Can't connect"
while [[ $OUTPUT == *"Can't connect"* ]]
do
OUTPUT=$(mysql -h $APP_IP -P :$APP_PORT -u yyy --password=xxx < ./my_script.sql 2>&1)
done