この問題、よくあるみたいなのでメモ。
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の値は空欄で構いません。