我在尝试创建postgis扩展程序时遇到错误。
这是我的dockerfile的样子。
from postgres
RUN apt-get update && apt-get install postgis -y
ADD /create_postgis_extension.sh /docker-entrypoint-initdb.d/
create.bla-bla..sh
#!/bin/sh
POSTGRES="gosu postgres postgres"
$POSTGRES --single -E <<EOSQL
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
EOSQL
运行图像时出现错误
后端&GT;声明:CREATE EXTENSION postgis;
错误:类型addbandarg []不存在 声明:postgis创建扩展;
后端&GT;声明:CREATE EXTENSION postgis_topology;
后端&GT;错误:必要的延期&#34; postgis&#34;未安装
我显然做错了什么,但我不知道是什么。 如果我使用apt-get安装了postgis,为什么没有安装postgis。
答案 0 :(得分:2)
我使用的是CentOS而不是Debian,但遇到了同样的问题。解决方案基本上归结为使用pg_ctl来启动/停止postgres。
sudo -u postgres pg_ctl start -w -D ${PGDATA}
sudo -u postgres createdb postgis_template -E UTF8
sudo -u postgres psql -d postgis_template -c "create extension if not exists postgis;"
sudo -u postgres pg_ctl stop -w
答案 1 :(得分:1)
-DOCKERFILE
FROM postgres:12.4
RUN apt-get update \
&& apt-get install wget -y \
&& apt-get install postgresql-12-postgis-3 -y \
&& apt-get install postgis -y
COPY ./db.sql /docker-entrypoint-initdb.d/
--- db.sql(在同一文件夹中)
CREATE EXTENSION postgis;
答案 2 :(得分:0)
是否可能为该postgres安装了错误的Postgis版本?
从版本2.1.0开始存在addbang [],在版本2.0和2.1之间存在问题。
RedHat家族较少出现这些问题,这是因为它们的行为不那么频繁(更新缓慢的人)。
话虽这么说。
docker-entrypoint-initdb.d由docker-entrypoint.sh内部脚本管理,仅在PGDATA文件夹不存在时运行。
此初始化脚本能够管理一些文件:.sh,.sql和.sql.tar.gz。
这些操作由docker用户 postgres 按字母顺序执行。
使用sql代替使用sh来执行sql。
create_postgis_extension.sql :
CREATE EXTENSION IF NOT EXISTS POSTGIS;
CREATE EXTENSION IF NOT EXISTS POSTGIS_TOPOLOGY;
干净简单
致谢。