次のようなシチュエーションを考えます。
mysql-error.log
) をボリュームマウントしてファイルの永続化を実施しているこのとき、 mysql-error.log
内に初期パスワードが2回記録されることになります。
すると、条件に合致する最初の行(1回目の初期パスワード)を処理しようとした際に(2回目のパスワードが設定されているため)パスワードが合致せず、処理が失敗してしまう遭遇したので対処しました。
- DB_INIT_PASSWORD=$(sudo grep 'temporary password' /var/log/mysql/mysql-error.log | sudo awk '{print $13}')
+ DB_INIT_PASSWORD=$(sudo grep 'temporary password' /var/log/mysql/mysql-error.log | sudo awk 'END{print $13}')
エントリポイントのシェルスクリプトで、 awk
に END
を付け加えました。処置としてはこれだけ。
試しに、中身のシェルスクリプトを該当環境で手動で実行してみます。
# sudo grep 'temporary password' /var/log/mysql/mysql-error.log | sudo awk '{print $13}'
XXXXXXXXXXXX
YYYYYYYYYYYY
変更前では複数マッチしていることが確認できます。このうち、最初のパスワード XXXXXXXXXXXX
で認証をくぐって理しようとすると冒頭のようにパスワードが合致せず失敗します。
# sudo grep 'temporary password' /var/log/mysql/mysql-error.log | sudo awk 'END{print $13}'
YYYYYYYYYYYY
そこで変更後。今度は1回目のパスワード XXXXXXXXXXXX
がヒットせず、2回目のパスワード YYYYYYYYYYYY
のみがヒットするようになりました。
これで Docker Compose 全体のビルドもコケなくなりました。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント