dockerで環境構築をし、サーバーを起動しようとdocker-compose up
をすると
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2)
というエラーが出てしまう。
ターミナルにて、エラーログを確認すると
何かが原因でDBがシャットダウンしてしまっている模様。
privilege tables
なのでsudoで作成するユーザのテーブル?
なぜdockerでこの内容のエラーが出る?
と色々疑問に思ったが、とりあえず一度全てのvolumeを削除してみることに。
解決策
①volumeのIDを調べる
$ docker volume ls
DRIVER VOLUME NAME
local b1d0c8467782387a61c446e1ea2aedaa745d6f120c4c6423bdc37e9005a7bd34
②上記で調べたVOLUME NAME
を用い、rmコマンドにてvolumeを削除
$ docker volume rm [VOLUME NAME]
# 例↓
$ docker volume rm b1d0c8467782387a61c446e1ea2aedaa745d6f120c4c6423bdc37e9005a7bd34
③docker-compose.yml
を元に、コンテナ&サーバー再起動
$ docker-compose up --build
$ docker-compose run web rails db:create
$ docker-compose run web rails db:migrate
④localhost:3000にアクセス
→ 無事エラーなく起動
原因
mysqlのテーブル情報が保存される場所がvolumeなのでコンテナを削除した際にvolumeコンテナを削除しきれておらず、前回のmysqlの情報が中途半端に残っていたため
、権限不足となっていたみたいです。
これ以前に何回もコンテナを作って削除して、を繰り返して試行錯誤していたため、その時の残骸でしょう...