やりたいこと
MySQLのコンテナがちゃんと立ち上がるまで任意のコンテナの実行を待ちたい
試したこと
depends_on
docker-compose up を実行したら、依存関係のある順番に従ってサービスを起動します。
いけるやん
と思ったら
注釈
depends_on では、 web の実行にあたり、 db と radis の準備が整うのを待てません。待てるのはコンテナを開始するまでです。サービスの準備が整うまで待たせる必要がある場合は、 起動順番の制御 に関するドキュメントで、問題への対処法や方針をご確認ください。
だめやん…。
ENTRYPOINT ["entrypoint.sh"]
ここを読むと、結局スクリプトで制御するしかない模様
MySQLの死活監視
mysqladmin
コマンドでできる。mysql-client
的なパッケージを入れておけば使える(jessieにて確認)
結論
こういう感じでやりました
entrypoint.sh
#!/bin/bash
until mysqladmin ping -h mysql_host --silent; do
echo 'waiting for mysqld to be connectable...'
sleep 3
done
./nin-i-no-shori