尝试在docker文件中创buildpostgis会导致错误
这是我试图运行的命令。
我正在使用官方postgres泊坞窗图像。 我找不到任何有关“不是数据库集群目录”的信息
Step 7 : RUN pg_ctl start -w && createdb postgis_template -E UTF8 && psql -d postgis_template -c "create extension if not exists postgis;" && pg_ctl stop -w ---> Running in da5745cab398 pg_ctl: directory "/var/lib/postgresql/data" is not a database cluster directory
你得到这个错误是因为当你试图运行pg_ctl start
命令时,在postgres docker镜像里面没有创build数据库集群。
数据库集群是在您基于镜像运行Docker容器时创build的,因为initdb
二进制文件作为docker-entrypoint.sh
脚本的一部分被调用,该脚本被设置为postgres容器的ENTRYPOINT
。
- 请参阅https://github.com/docker-library/postgres/blob/cb70a79c1a8248d7e0db89d79dfbd08dd481be7f/9.4/Dockerfile#L47将脚本设置为
ENTRYPOINT
- 对于调用
initdb
的行,请参阅https://github.com/docker-library/postgres/blob/cb70a79c1a8248d7e0db89d79dfbd08dd481be7f/9.4/docker-entrypoint.sh#L11 。
如果您正在运行postgres容器,并在容器重启时持续挂载数据卷,则可以只从psql shell运行一次该命令,或者也可以覆盖docker-entrypoint.sh
脚本并添加自定义的脚本创buildpostgis扩展。