Rails db:使用在容器中运行的postgres进行迁移

时间:2017-10-31 10:22:38

标签: ruby-on-rails postgresql docker

在我的开发环境中,我有一个在容器中运行的postgres,运行db:migrate工作正常,直到最近我需要将模式更改为sql

config.active_record.schema_format = :sql

当我运行db:migrate时,我收到以下错误:

pg_dump: [archiver (db)] connection to database "mydatabase" failed: FATAL:  password authentication failed for user "myuser"

在我看来,pg_dump忽略了database.yml设置。其他人对这种设置有运气吗?

1 个答案:

答案 0 :(得分:2)

我最终做的是在你使用的ubuntu中安装postgresql-client-common和postgresql-client:

sudo apt install postgresql-client-common postgresql-client

这在本地给了我pg_dump,然后我在docker机器上打开了一个终端并将host all all 0.0.0.0/0 trust添加到默认的pg_hba.conf文件中

打开shell使用:

docker exec -i -t <idOfContainer> /bin/bash

添加以下行:

cd /var/lib/postgresql/data
echo host all all 0.0.0.0/0 trust >> pg_hba.conf

最后一步是你需要将你的本地用户添加到postgress,pg_dump将不会使用来自datbaase.yml的凭据,所以你应该连接到psql并运行:

CREATE USER <youruser>