背景
- jwilder/dockerize: Utility to simplify running applications in docker containers
- ufoscout/docker-compose-wait: A simple script to wait for other docker images to be started while using docker-compose
この辺は全部試したが, PHP から接続しようとすると Connection Refused が多発する。TCP で接続可能になってから実際に利用可能になるまで若干のラグがあるため,もっと確実な方法を探していた。
対処法
とりあえずこれを書いておけ
sh -c 'docker-compose logs -f <MySQLコンテナ名> | { sed "/mysqld: ready for connections/ q" && kill $$ ;}' || :
YAMLのリストに書く場合はエスケープが必要なのでパイプから改行する
- |
sh -c 'docker-compose logs -f <MySQLコンテナ名> | { sed "/mysqld: ready for connections/ q" && kill $$ ;}' || :
ログを見れば確実!ログに ready for connections と出ればアプリケーションレベルでも必ず有効な状態であることが保証される。