ポンコツエンジニアのごじゃっぺ開発日記。

いろいろポンコツだけど、気にするな。エンジニアの日々の開発などの記録を残していきます。 自動で収入を得られるサービスやシステムを作ることが目標!!

【Connection refused】docker-composeでMySQLの初期化中にアクセスしてしまってエラーになる問題の回避策

docker-composeでMySQLを使いつつ、例えばGithub Actionsなどで自動で処理を行う等をする場合に気をつけたいこと。 MySQLサーバが起動し終わるまで待機しないといけないですよね。 自分もよく起動する前にアクセスしたりphpunit等を実行してエラーになってしまうことによく遭遇します。その結果、Github Actionsなどのチェック処理が失敗してしまうという。。

問題

以下が今回のエラー内容になります。

Failed to create mysql.mysql database, SQLSTATE[HY000] [2002] Connection refused

データベースの起動が完了せずに、SQLSTATE[HY000] [2002] Connection refused が発生してしまいますね。

解決策

そこで、以下のようなmysqladminコマンドを行い、DBが起動するまで待ちます。

docker-compose exec -T mysql bash -c "mysqladmin --wait --count 60 ping -proot || exit 1"

mysqladmin ping を使ってmysqlが起動中か把握することができます。

これを書くことで、起動するまでここで待機するような処理が実現できます。

お問い合わせプライバシーポリシー制作物