为什么我的postgres docker映像不包含任何数据?

时间:2019-01-15 12:50:43

标签: postgresql docker

我想用数据创建一个docker镜像。

我的尝试如下:

FROM postgres

COPY dump_testdb /image
RUN pg_restore /image
RUN rm -rf /image

然后我运行docker build -t testdb .docker run -d testdb

当我连接到容器时,看不到还原的数据库。如何获取包含恢复数据的图像?

1 个答案:

答案 0 :(得分:0)

将扩展名为.sql的转储文件复制到/docker-entrypoint-initdb.d/中。不要尝试运行任何东西。 postgres映像将在第一次在特定数据目录上启动容器时运行该目录中的所有内容。

通常,您将无法运行与Dockerfile中的数据库进行交互的命令,因为此时数据库将无法运行。 (基本映像中有一个脚本,该脚本需要进行一些复杂的操作才能进行首次设置。)在任何情况下,由于Docker的卷系统的机制,您无法创建包含预先填充的数据库数据的映像。您必须使用类似的机制来使映像恢复转储或以其他方式在第一次启动时自行设置。