こんばんは!
本日は個人投稿です。
自己学習でLaravel環境を構築していた際のエラー対処備忘録となります
遭遇したエラー
dockerで構築したMySQlコンテナに入り、ルートユーザーでログインしようとした時
下記のエラーが発生しました
# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
環境
- dockerでMySQLコンテナを構築
- MySQL ver.:8.0
- アプリケーションコンテナでLaravelのプロジェクトを作成していた
docker-compose.yml
設定していたdocker-compose.ymlは以下の通りでした
※ mysqlコンテナだけ抜粋
docker-compose.yml
mysql:
build: ".docker/local/mysql"
ports:
- "3306:3306"
volumes:
- ./storage/mysql:/var/lib/mysql
environment:
MYSQL_DATABSE: $DB_DATABASE
MYSQL_USER: $DB_USERNAME
MYSQL_PASSWORD: $DB_PASSWORD
MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
container_name: pr-mysql
結論
ボリュームを削除して、コンテナを立ち上げ直す事で直りました
手順① コンテナを落とす
$ docker-compose down -v
これで、ボリュームを削除しつつ、コンテナを落とせます。
手順② ローカル側のボリュームを削除する
ですが、コンテナ側のボリュームを削除するコマンドですので
ローカル側は自身で削除する必要があります
画像の通り、ymlファイルで、storage/mysqlをマウントしておりますので
コンテナを落とした後に、このディレクトリごと削除する事で、ローカル側のボリュームを更新できます
手順③ もう一度ビルドとコンテナ立ち上げ
これで簡単に言い換えますと「やり直しができた
ということになります
振り返り
適切に環境変数の設定ができている状態でコンテナの立ち上げとボリュームの生成ができていないと考えました。
以下、エラーが発生した際の作業手順です
- アプリケーションコンテナの生成
- Laraelのインストール
- MySQLコンテナの作成(ymlに追記)
- envファイルの作成を飛ばして、ビルドしてしまった
- 環境変数が読み取れないエラーが発生 <= 当然ですよね
- コンテナを落とす
- envファイルの作成
- コンテナの立ち上げ直し
- rootユーザーでログインができない事象が発生
コンテナ側のボリュームを削除するだけでは解決できないこともあるんだな
と再認識しました!
以上、備忘録でした。