
https://github.com/submarcos/docker-postgis/workflows/Docker%20PostGIS%20CI/badge.svg](https://github.com/submarcos/docker-postgis/actions)
juank/postgis镜像提供了运行已安装PostGIS扩展的Postgres的标签。该镜像基于官方https://registry.hub.docker.com/_/postgres/%E9%95%9C%E5%83%8F%EF%BC%8C%E6%8F%90%E4%BE%9B%E9%80%82%E7%94%A8%E4%BA%8EPostGIS 3.4.x的debian和alpine变体,兼容PostgreSQL 12、13、14、15和16版本。此外,还提供基于最新两个Postgres版本(15、16)构建的镜像版本,其中PostGIS及其依赖项从各自的master分支构建。
此镜像确保父postgres镜像创建的默认数据库将安装以下扩展:
| 已安装扩展 | https://github.com/postgis/docker-postgis/blob/master/initdb-postgis.sh |
|---|---|
postgis | 是 |
postgis_topology | 是 |
postgis_tiger_geocoder | 是 |
postgis_raster | 是 |
postgis_sfcgal | 否 |
address_standardizer | 否 |
address_standardizer_data_us | 否 |
除非在启动容器时传递-e POSTGRES_DB,否则此数据库将以管理员用户命名(postgres或通过-e POSTGRES_USER指定的用户)。如果希望使用旧的模板数据库机制启用PostGIS,镜像还提供名为template_postgis的PostGIS启用模板数据库。
支持的架构:amd64(也称为X86-64)
新用户推荐版本:postgis/postgis:16-3.4
| DockerHub镜像 | Dockerfile | 操作系统 | Postgres | PostGIS |
|---|---|---|---|---|
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=12-3.4 | https://github.com/postgis/docker-postgis/blob/master/12-3.4/Dockerfile | debian:bullseye | 12 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=13-3.4 | https://github.com/postgis/docker-postgis/blob/master/13-3.4/Dockerfile | debian:bullseye | 13 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=14-3.4 | https://github.com/postgis/docker-postgis/blob/master/14-3.4/Dockerfile | debian:bullseye | 14 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=15-3.4 | https://github.com/postgis/docker-postgis/blob/master/15-3.4/Dockerfile | debian:bullseye | 15 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=16-3.4 | https://github.com/postgis/docker-postgis/blob/master/16-3.4/Dockerfile | debian:bullseye | 16 | 3.4.2 |
postgis_sfcgal无法正常工作)| DockerHub镜像 | Dockerfile | 操作系统 | Postgres | PostGIS |
|---|---|---|---|---|
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=12-3.4-alpine | https://github.com/postgis/docker-postgis/blob/master/12-3.4/alpine/Dockerfile | alpine:3.18 | 12 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=13-3.4-alpine | https://github.com/postgis/docker-postgis/blob/master/13-3.4/alpine/Dockerfile | alpine:3.18 | 13 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=14-3.4-alpine | https://github.com/postgis/docker-postgis/blob/master/14-3.4/alpine/Dockerfile | alpine:3.18 | 14 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=15-3.4-alpine | https://github.com/postgis/docker-postgis/blob/master/15-3.4/alpine/Dockerfile | alpine:3.18 | 15 | 3.4.2 |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=16-3.4-alpine | https://github.com/postgis/docker-postgis/blob/master/16-3.4/alpine/Dockerfile | alpine:3.18 | 16 | 3.4.2 |
*-master镜像的模板需手动更新,有时可能会延迟几周。| DockerHub镜像 | Dockerfile | 操作系统 | Postgres | PostGIS |
|---|---|---|---|---|
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=15-master | https://github.com/postgis/docker-postgis/blob/master/15-master/Dockerfile | debian:bullseye | 15 | 开发版:postgis、geos、proj、gdal |
| https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&name=16-master | https://github.com/postgis/docker-postgis/blob/master/16-master/Dockerfile | debian:bullseye | 16 | 开发版:postgis、geos、proj、gdal |
要运行一个能够提供PostGIS启用数据库的基本容器,可按以下方式启动容器:
bashdocker run --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d postgis/postgis
有关如何启动和控制Postgres容器的更多详细说明,请参见postgres镜像的文档https://registry.hub.docker.com/_/postgres/%E3%80%82
启动数据库容器后,可直接在运行的容器上连接数据库:
bashdocker exec -ti some-postgis psql -U postgres
或者启动新容器作为客户端。此时可使用用户定义网络链接两个容器:
bashdocker network create some-network # 服务器容器 docker run --name some-postgis --network some-network -e POSTGRES_PASSWORD=mysecretpassword -d postgis/postgis # 客户端容器 docker run -it --rm --network some-network postgis/postgis psql -h some-postgis -U postgres
有关连接不同容器的更多详细信息和替代方法,请查看https://registry.hub.docker.com/_/postgres/%E6%96%87%E6%A1%A3%E5%92%8CDocker%E7%BD%91%E7%BB%9C%E6%96%87%E6%A1%A3%E3%80%82
有关创建和使用空间启用数据库的更多选项,请参见PostGIS文档。
由于docker-postgis仓库是官方Docker PostgreSQL仓库的扩展,因此所有在官方仓库支持的环境变量在此也受支持:
POSTGRES_PASSWORDPOSTGRES_USERPOSTGRES_DBPOSTGRES_INITDB_ARGSPOSTGRES_INITDB_WALDIRPOSTGRES_HOST_AUTH_METHODPGDATA了解更多:https://github.com/docker-library/docs/blob/master/postgres/README.md
警告:只有当您使用空数据目录启动容器时,Docker特定变量才会生效; 容器启动时任何预先存在的数据库都将保持不变。
需要注意的是,Docker镜像的环境变量与libpq — C库的环境变量(PGDATABASE、PGUSER、PGPASSWORD)不同。
故障排除通常具有挑战性。重要的是要知道docker-postgis仓库是官方Docker PostgreSQL仓库的扩展。因此,如果遇到任何问题,建议测试是否可以使用https://hub.docker.com/_/postgres%E9%87%8D%E7%8E%B0%E9%97%AE%E9%A2%98%E3%80%82%E5%A6%82%E6%9E%9C%E5%8F%AF%E4%BB%A5%EF%BC%8C%E5%BB%BA%E8%AE%AE%E5%9F%BA%E4%BA%8E%E6%AD%A4%E6%90%9C%E7%B4%A2%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82%E6%8E%A8%E8%8D%90%E4%BB%A5%E4%B8%8B%E7%BD%91%E7%AB%99%EF%BC%9A
如果问题与PostGIS相关:
如果您没有postgres docker使用经验,建议阅读此博客文章:
必须注意,在云环境中,使用默认设置时,这些镜像易受***,如果端口开放,极有可能被加密货币挖矿程序感染(https://github.com/docker-library/postgres/issues/770#issuecomment-704460980%EF%BC%89%E3%80%82
-p 5432:5432而非-p 127.0.0.1:5432:5432)将可从外部访问。即使您配置UFW阻止此特定端口,Docker也会管理自己的iptables规则(阅读更多)。-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key-p 127.0.0.1:5432:5432还请扫描基础postgres docker镜像:
扫描基础postgres Docker镜像以查找潜在安全问题也很重要。如果您的安全扫描器报告镜像中存在漏洞(称为CVE),您可能想知道原因。为更好地理解,请阅读Docker Library常见问题,特别是标题为https://github.com/docker-library/faq#why-does-my-security-scanner-show-that-an-image-has-cves%E7%9A%84%E9%83%A8%E5%88%86%E3%80%82
有关postgres docker镜像的更多特定问题,可使用以下链接搜索:
优化安全扫描: 建议专注于扫描和修复可解决的问题。 使用以下命令仅扫描可修复的问题:
trivy image --ignore-unfixed postgis/postgis:16-3.4-alpinetrivy image --ignore-unfixed postgres:16-alpine
更多详情可阅读此文章:[***]遗憾的是,我们无法控制Debian和Alpine发行版或上游postgres镜像的更新。
因此,可能存在一些我们无法立即修复的问题。
好在postgis/postgis镜像每周一重新生成,以确保包含最新的更改和改进,因此这些镜像始终保持最新。
我们始终欢迎增强安全性的建议。如有任何想法,请告诉我们。
当因PostGIS更新遇到OperationalError: could not access file "$libdir/postgis-X.X错误时,运行:
bashdocker exec some-postgis update-postgis.sh
这将更新到最新的PostGIS版本。更新是幂等的,多次运行不会有问题,您将收到类似以下的通知:
Updating PostGIS extensions template_postgis to X.X.X NOTICE: version "X.X.X" of extension "postgis" is already installed NOTICE: version "X.X.X" of extension "postgis_raster" is already installed NOTICE: version "X.X.X" of extension "postgis_topology" is already installed NOTICE: version "X.X.X" of extension "postgis_tiger_geocoder" is already installed ALTER EXTENSION Updating PostGIS extensions docker to X.X.X NOTICE: version "X.X.X" of extension "postgis" is already installed NOTICE: version "X.X.X" of extension "postgis_raster" is already installed NOTICE: version "X.X.X" of extension "postgis_topology" is already installed NOTICE: version "X.X.X" of extension "postgis_tiger_geocoder" is already installed ALTER EXTENSION
此Docker-PostGIS项目是PostGIS组的一部分,并遵循更灵活的贡献规则。
./update.sh脚本。参见:[***]
以下是 juank/postgis 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务