📝
Docker compose upでmysqlがExited(1)になる
DockerでLaravelのdocker-compose.ymlを作成し、docker-compose up
を実行したらMySQLのコンテナがうまく立ち上がらなかった。
$ docker-compose up
Creating laravel_redis ... done
Creating laravel_mysql ... done
Creating laravel_minio ... done
Creating laravel_php_fpm ... done
Creating laravel_phpmyadmin ... done
Creating laravel_nginx ... done
ステータス上はdoneになっていたが、MySQLに接続できない。
docker-compose.ymlでのMySQLのコンテナの設定は以下の通り。
mysql:
image: mysql:5.7
container_name: laravel_mysql
environment:
MYSQL_DATABASE: laravel_db
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
TZ: Asia/Tokyo
ports:
- 3306:3306
volumes:
- laravel_db_data:/var/lib/mysql:cached
docker ps -a
でコンテナを確認してみるとmysqlのコンテナが
Exited (1) About a minute ago
となっていた。
docker compose logs
でログを確認してみると以下のエラーが出力されていた。
laravel_mysql | 2022-11-04 16:48:52+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.34-1debian10 started.
laravel_mysql | 2022-11-04 16:48:52+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
laravel_mysql | 2022-11-04 16:48:52+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.34-1debian10 started.
laravel_mysql | 2022-11-04 16:48:52+09:00 [ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user
laravel_mysql | Remove MYSQL_USER="root" and use one of the following to control the root user password:
laravel_mysql | - MYSQL_ROOT_PASSWORD
laravel_mysql | - MYSQL_ALLOW_EMPTY_PASSWORD
laravel_mysql | - MYSQL_RANDOM_ROOT_PASSWORD
どうやらMYSQL_USER
には"root"を指定しちゃいけないみたい。
今回は新しくユーザーを作成するのがめんどうだったのでrootユーザーを使いたいので、
MYSQL_USER
とMYSQL_PASSWORD
を削除。
docker-compose.yml
MYSQL_DATABASE: laravel_db
MYSQL_ROOT_PASSWORD: root
- MYSQL_USER: root
- MYSQL_PASSWORD: root
TZ: Asia/Tokyo
無事にMySQLコンテナが起動しました!
参考記事
Discussion