【Docker】unknown mysql server host 'db' (-2) と表示されるときの対処法

 

・環境

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 を一旦全削除する。

 

 

RubyとRailsの関連記事
  • Docker × Railsで日本時間を設定する方法
  • 【Rubyistなら知っておきたい】Ruby3.0のリリース日と「3つの柱」
  • 【Rails】RailsにRedisを接続する日本1シンプルなやり方
  • 【3時間で完成!?】Railsを使ってWebアプリを高速で作る方法
  • 【超カッコいい!】Ruby Gemの名前 3選!
  • 【Docker】unknown mysql server host 'db' (-2) と表示されるときの対処法