https://www.engilaboo.com/laravel-docker/
上記記事に沿ってコマンドをポチポチしていたところ、php artisan migrate
コマンドでDB接続を確認したときにエラーになった。
原因特定までの過程
本当にDB接続エラーなのかの確認
php artisan tinker
tinkerとは入力した内容を即座に評価して出力してくれる対話型の入出力環境
DB::select('select 1');
かんたんなSELECT文が通るか実行して確認。
同じエラーがでたのでDB接続エラーであることは断定。
restart: always
をつけて失敗しても再起動させるようにした。
version: '3'
services:
app:
build: ./docker
ports:
- 80:80
volumes:
- ./app:/var/www/app
working_dir: /var/www/app
db:
image: mysql:8.0
restart: always
ports:
- 3306:3306
environment:
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: pass
コンテナを立ち上げ直す
一度コンテナを止めて削除しなくても下記コマンドでアップデートできるようだ(もしかしたら一度止めて削除して、立ち上げを一発でやってくれてるのかも)
docker-compose up -d --build
docker psで確認
vanshiMacBookPro15inch:app suzukitaishi$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90613db9ee47 laravel-docker_app "docker-php-entrypoi…" 19 seconds ago Up 14 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp laravel-docker_app_1
4b6ec132459a mysql:8.0 "docker-entrypoint.s…" 19 seconds ago Restarting (1) 2 seconds ago laravel-docker_db_1
mysqlコンテナ起動はしたが、STATUSがRestartingにしていて起動はしていても何かでつまづいてはいるようだ。
原因
docker logs {コンテナID}
でログを確認
ログの確認方法
https://qiita.com/mom0tomo/items/35dfacb628df1bd3651e
2022-04-18 04:56:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.28-1debian10 started.
2022-04-18 04:56:10+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-04-18 04:56:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.28-1debian10 started.
2022-04-18 04:56:10+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
docker-composeのパスワードの設定まわりが間違っている様子。
解決
docker-compose.yamlファイルにMYSQL_ROOT_PASSWORDが必要だった。
https://qiita.com/takepan/items/0cbf13af3a0bb2c243ab
とはいえ、またDB接続の違うエラーがでて解消中。