Postgres команда создания расширения Docker контейнер - PullRequest
0 голосов
/ 21 февраля 2020

Мне нужно создать расширения для Postgres экземпляра, работающего внутри Docker, в частности postgis . Я следовал за другими сообщениями SO, включая этот , но безрезультатно.

Вот что у меня есть ...

Dockerfile

FROM postgres
COPY ext-script.sql /docker-entrypoint-initdb.d

ext-script. sql

create extension pgcrypto;
create extension postgis;

Docker run команда

docker run -d -p 5432:54323 -e POSTGRES_PASSWORD=somepassword -e POSTGRES_USER=someuser -v postgres-data:/var/lib/postgresql/data --name dbcontainer dbimage

logs

docker logs dbcontainer
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/ext-script.sql
CREATE EXTENSION
2020-02-20 22:18:01.090 UTC [60] ERROR:  could not open extension control file "/usr/share/postgresql/12/extension/postgis.control": No such file or directory
2020-02-20 22:18:01.090 UTC [60] STATEMENT:  create extension postgis;
psql:/docker-entrypoint-initdb.d/ext-script.sql:2: ERROR:  could not open extension control file "/usr/share/postgresql/12/extension/postgis.control": No such file or directory

Чего мне не хватает?

ОБНОВЛЕНИЕ

В итоге я использовал postgis dockerhub image .

Все легко, когда знаешь как:)

# Dockerfile
FROM postgis/postgis
COPY data.sql /docker-entrypoint-initdb.d

1 Ответ

2 голосов
/ 21 февраля 2020

PostGIS, в отличие от pgcrypto, не входит в стандартные пакеты PostgreSQL, его необходимо установить из какого-либо источника перед вызовом create extension postgis;. Здесь есть довольно хороший контейнер PostGIS docker на docker концентраторе здесь .

...