我正在尝试将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
我将user
和password
配置到file.yaml中。我可以访问数据库但是没有创建扩展。
我遵循了一些问题中提到的一些解决方案,这些问题与这个问题类似,但它们并没有解决我的问题。我提出或错过了什么错?
答案 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
命令。