我将应用程序从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容器中的新数据库中的正确方法是什么?
答案 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的数据库转储的名称,因此可以更改为转储的名称。