如何在docker中为postgresql创建postgis扩展?

时间:2014-12-18 13:40:37

标签: postgresql docker postgis

我在尝试创建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。

3 个答案:

答案 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;

干净简单

致谢。