環境
Docker 19.03.5
Rails 5.2.4
Ruby 2.5.3
MySQL 5.7
イントロダクション
docker-compose内でRails環境を動かそうと
docker-compose run web rails db:create
した際に以下のようなエラーが発生。
rails aborted! Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2)
はて、どうしたものか、、
まずは、調べて出てきたものをそのままやってみよう。
まず試してみるべきこと
「database.yml」ファイルの編集
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
最後の行の「host: db」が「host: localhost」になっている場合は動かない。
「docker-compose.yml」ファイルの編集
volumes:
- ./tmp/db:/var/lib/mysql/data
「docker-compose.yml」ファイルのdb部分にvolumesを追加してみる。
db部分は以下のような構造になる。
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "3306:3306"
volumes:
- ./tmp/db:/var/lib/mysql/data
それでも動かない場合(最終手段)
docker rmi $(docker images -q)
docker image を一旦全削除する。