【发布时间】:2014-09-19 16:22:02
【问题描述】:
我正在将一个应用程序迁移到 Docker。我遇到的一个问题是将初始数据加载到在 Docker 中运行的 PostgreSQL 中的正确方法是什么?我恢复数据库备份文件的典型方法不起作用。我尝试了以下方法:
gunzip -c mydbbackup.sql.gz | psql -h <docker_host> -p <docker_port> -U <dbuser> -d <db> -W
这不起作用,因为 PostgreSQL 提示输入密码,而我无法输入密码,因为它正在从 STDOUT 读取数据。我无法使用 $PGPASSWORD 环境变量,因为我在主机中设置的任何环境变量都没有在我的容器中设置。
我也尝试了上面类似的命令,除了使用 -f 标志,并指定 sql 备份文件的路径。这不起作用,因为我的文件不在我的容器上。我可以使用 Dockerfile 中的 ADD 语句将文件复制到我的容器中,但这似乎不对。
所以,我问社区。将 PostgreSQL 数据库备份加载到 Docker 容器中的首选方法是什么?
【问题讨论】:
-
我已阅读您引用的文章。我要问的场景是:我在一个容器中有一个 PostgreSQL 数据库和一个单独的数据容器。两个容器都在运行,数据库是空的。我的主机上有一个备份文件。如何将文件恢复到空数据库中?我上面的问题描述了我尝试过的内容以及遇到的问题。我可以将备份文件烘焙到数据容器中,但这似乎不对。
-
链接是指使用 $PGPASSWORD 环境变量或 ./pgpass 文件。这是将环境变量或文本文件烘焙到包含纯文本密码的容器中的安全解决方案吗?
标签: postgresql backup docker