Rails+PostgreSQLのDockerコンテナをビルドし直したらActiveRecord::DatabaseConnectionErrorが出た

結論

パスワードを途中で変えたからなんですが、結局の所、volumeは関係なくて、buildの際に–no-cacheオプションをつけてビルドし直したところ新しいパスワードが反映され、接続できました。


一度落としておいたコンテナを開発環境で数日ぶりに立ち上げ、db:createしようとするとエラーが出ました。

エラー

ActiveRecord::DatabaseConnectionError
There is an issue connecting to your database with your username/password, username: root.
Please check your database configuration to ensure the username/password are valid.

dbコンテナ(PostgreSQL)のパスワードをdocker/password.ymlの環境変数で指定して、appコンテナからの接続情報はdocker-compose.ymlに記載しているのですが、どうもこれを変えたのが反映されていないっぽい。

コンテナを再起動しても、ビルドし直しても、down -v –remove-orphansしても接続できない!グギギ….

一応古いvolumeが残ってないか確認

$ docker volume ls

DRIVER    VOLUME NAME
local     1aba15f7bf962b8612f7101526b3a112747d1ffefec5dd5eeb3cf9a764db634e
local     fb719cf8d4c5b8e8410bae1258470e054d9c2e8037ecf7524e5d1c5f9fc6a13c
local     app_db_data5432

# 消す
$ docker volume rm app_db_data5432

# 使ってないボリュームはpruneで消せる
$ docker volume prune

それでもDBに接続できません。

解決

あ、キャッシュ…..

$ docker-compose build --no-cache

接続できた。(おわり)

公開日