无法在postgres docker的图像中创建postgis扩展

时间:2018-02-09 16:12:58

标签: postgresql docker dockerfile

我正在尝试将postgis扩展创建到postgres docker镜像中。 Dockerfile:

FROM postgres:9.6.4

RUN apt-get clean \
    && apt-get update \
    && apt-get -y install postgis \
    && rm -rf /var/lib/apt/lists/*

COPY ./scripts/postgis.sh  /docker-entrypoint-initdb.d/postgis.sh

postgis.sh:

#!/bin/sh
for DB in $(psql -t -c  "SELECT datname from pg_database where datname = 'backend'"); do
    echo "Loading PostGIS extensions into $DB"
    "${psql[@]}" --dbname="$DB" <<-'EOSQL'
        CREATE EXTENSION IF NOT EXISTS postgis;
EOSQL
done

我将userpassword配置到file.yaml中。我可以访问数据库但是没有创建扩展。 我遵循了一些问题中提到的一些解决方案,这些问题与这个问题类似,但它们并没有解决我的问题。我提出或错过了什么错?

1 个答案:

答案 0 :(得分:0)

您安装的postgis软件包实际上并不包含postgis扩展名。该软件包的内容是:

root@934775e6cf67:/# dpkg -L postgis
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/raster2pgsql.1.gz
/usr/share/man/man1/shp2pgsql.1.gz
/usr/share/man/man1/pgsql2shp.1.gz
/usr/share/doc
/usr/share/doc/postgis
/usr/share/doc/postgis/changelog.Debian.gz
/usr/share/doc/postgis/NEWS.Debian.gz
/usr/share/doc/postgis/changelog.gz
/usr/share/doc/postgis/copyright
/usr/share/doc/postgis/README.Debian
/usr/share/doc/postgis-doc
/usr/share/doc/postgis-doc/README.postgis.gz
/usr/bin
/usr/bin/pgsql2shp
/usr/bin/raster2pgsql
/usr/bin/shp2pgsql

所以这些是postgis的支持工具,但不是扩展本身。您需要安装postgresql-9.6-postgis-2.4包。安装完成后,我可以成功运行create extension postgis命令。