Postgres在Docker容器中创建扩展的命令

3
我需要为运行在Docker内的Postgres实例 - 特别是postgis创建扩展。我已经遵循了其他SO帖子的步骤,包括this one,但都没有成功。
以下是我目前的进展... 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

日志

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镜像

当你知道如何做时,一切都很容易 :)

# Dockerfile
FROM postgis/postgis
COPY data.sql /docker-entrypoint-initdb.d
1个回答

3

与pgcrypto不同,PostGIS没有包含在默认的PostgreSQL软件包中,需要在调用create extension postgis;之前从某个源安装。在docker hub上有一个非常好的PostGIS docker容器here


1
是的,我最终走了这条路,但肯定有一种方法可以复制postgis二进制文件吗? - burntsugar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接