dbコンテナだけが立ち上がらないdocker-compose build


laravel + dockerでやっていたプロジェクト。

最近dockerをリフレッシュしてコンテナが消えたので環境構築をし直す機会がありました。

いつもどおりgitリポジトリから
git clone リポジトリURL
docker-compose build
docker-compose up
とコマンドを入れていく

データベースコンテナだけが起動に失敗している。
エラーログを見ると


MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user zac_db | Remove MYSQL_USER="root" and use one of the following to control the root user password:

というエラーが出ていた。

以前と同じやり方なのになんで?

英語力低いのでちょっと何言ってるのかわからないですね状態なので、取り敢えずgoogle翻訳にかけてみる

mysql_user = "root"、mysql_user、およびmysql_passwordは、通常のユーザーを構成するためのものであり、rootユーザーには使用できません。 mysql_user = "root"を削除し、次のいずれかを使用してrootユーザーのパスワードを制御します。

???

はい?

取り敢えずrootという名前がだめらしい?

結論

rootを消してみた。

docker-compose.ymlのrootを

docker-compose.yml

  # db
  db:
    image: mysql:5.7.33
    container_name: database
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      TZ: 'Asia/Tokyo'

以下に変更。rootをroot2に変更

docker-compose.yml

  # db
  db:
    image: mysql:5.7.33
    container_name: database
    environment:
      MYSQL_ROOT_PASSWORD: root2
      MYSQL_DATABASE: laravel
      MYSQL_USER: root2
      MYSQL_PASSWORD: root2
      TZ: 'Asia/Tokyo'

通った。
database起動!

よくわからないが最近の仕様変更でrootを使用できなくなったらしい。root以外にすれば大丈夫そう。

なんでやねん
(セキュリティー的な問題?)

調べたら同じような症状で躓いている人が多そう。MySQLのDockerイメージが更新されたことが原因らしい