Woher weiß ich, wann mein Docker-Mysql-Container aktiv ist und mysql für die Abfrage bereit ist?

Ich bin die Bereitstellung von ein paar verschiedene docker-Container, mysql wird die erste. Ich möchte Skripts ausführen, sobald die Datenbank ist und gehen Sie zum Bau anderer Container. Das Skript wurde versagt, weil es versuchte zu laufen, wenn der entrypoint-Skript, das festlegt, mysql (von dieses offizielle mysql-container), war noch am laufen.

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

Gibt es eine Möglichkeit zu warten, bis ein signal von einem entrypoiny mysql-setup-Skript Veredelung im inneren des docker-container? Bash schlafen scheint wie eine suboptimale Lösung.

EDIT: Ging für ein bash-Skript wie diesem. Nicht die eleganteste und ein bisschen brute-force, sondern funktioniert wie ein Charme. Vielleicht wird jemand finden, der nützlich ist.

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

InformationsquelleAutor der Frage haren | 2014-08-26

Schreibe einen Kommentar