一尘不染

使用初始架构构建Postgres Docker容器

docker

我正在寻找构建表示已经存在的公司数据库的dockerfile。同样,我想创建一个从还原psql转储开始的docker文件。

psql_dump.sql.目录中。

FROM postgres
ADD . /init_data
run "createdb" "--template=template0" "my_database"
run  "psql" "-d" "my_database"  --command="create role my_admin superuser"
run  "psql" "my_database" "<" "init_data/psql_dump.sql"

我认为这样做就足够了。我想避免使用.sh脚本的解决方案。

我使用template0,因为psql文档说您需要与原始数据库中创建的用户相同,并且需要在还原之前使用template0创建数据库。

但是,这给了我一个错误:

createdb: could not connect to database template1: could not connect to server: No such file or directory
        Is the server running locally and accepting

我还在整个应用程序中使用docker compose,如果在docker-
compose中解决此问题更好,那么我很乐意使用基本的psql映像并使用docker compose做到这一点。


阅读 336

收藏
2020-06-17

共1个答案

一尘不染

根据官方PostreSQL Docker映像的使用指南,您需要做的是:

Docker文件

FROM postgres
ENV POSTGRES_DB my_database
COPY psql_dump.sql /docker-entrypoint-initdb.d/

POSTGRES_DB环境变量将指示容器中创建一个my_database在首次运行模式。

并且将执行在容器中.sql找到的任何文件/docker-entrypoint-initdb.d/

如果要执行.sh脚本,也可以在/docker-entrypoint-initdb.d/目录中提供它们。

2020-06-17