この問題、よくあるみたいなのでメモ。
1. mysql.sockがあるかどうか疑う
mysql.sockについてですが、まれに自動で作成されない場合があるそうです。そのため、dbコンテナ上であらかじめ手動で作成してから再度試してみましょう。
$ sudo touch /var/lib/mysql/mysql.sock $ sudo chown mysql:mysql /var/lib/mysql/mysql.sock
2. config/database.ymlの設定を疑う
そもそもソケットいらない?
docker-composeを用いてweb用とdb用のコンテナをそれぞれ分けて運用している場合、config/database.yml
のhost
にdb
とコンテナを明示する必要があります。(当たり前かもしれない…)
default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: password host: db development: <<: *default database: myapp_development test: <<: *default database: myapp_test
passwordの空欄を許可している場合は、passwordの値は空欄で構いません。