将数据从Postgres转储加载到Docker Postgres Container中的新数据库中

时间:2018-05-20 21:46:28

标签: postgresql docker

我将应用程序从Heroku移动到Docker容器中,并试图弄清楚如何将数据从我的Heroku数据库迁移到我的新Postgres容器中。

到目前为止尝试

我已将db的转储复制到Postgres容器中。

docker cp latest.dump mycontainer:/latest.dump

然而,当我尝试pg_restore时,我在尝试运行docker exec命令时遇到错误。

docker exec <pg_container> pg_restore -d <db_name> latest.dump

pg_restore: [archiver (db)] connection to database "<db_name>" failed: FATAL:  role "root" does not exist

或者当我尝试使用db user运行时:

docker exec <pg_container> -u <db_user> pg_restore -d <db_name> latest.dump

OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"-u\": executable file not found in $PATH": unknown

问题

将此数据加载到docker容器中的新数据库中的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我能够找到解决方案作为一行命令:

docker exec <container_name> pg_restore --verbose --clean --no-acl --no-owner -h postgres --dbname=postgresql://<user>:<password>@127.0.0.1:<port>/<db_name> latest.dump

latest.dump是来自Heroku的数据库转储的名称,因此可以更改为转储的名称。