PostGIS是PostgreSQL对象关系型数据库的空间数据库扩展器,它为PostgreSQL增添了对空间数据类型(如点、线、面、几何体集合等)的支持,提供空间索引功能以提升空间数据查询效率,并集成了丰富的空间分析函数(包括距离计算、缓冲区分析、叠加操作等),使PostgreSQL能够高效存储、管理与分析空间数据,广泛应用于地理信息系统(GIS)、位置服务、地图绘制等领域。
收藏数: 290
下载次数: 249531051
状态: active
发布者: postgis
类型: 镜像
postgis/postgispostgis/postgis 镜像是在官方 postgres 镜像基础上构建的,预装了 PostGIS 空间数据库扩展。该镜像提供 Debian 和 Alpine 两种版本,支持 PostGIS 3.5.x,兼容 PostgreSQL 13、14、15、16、17 版本。此外,还提供基于最新两个 PostgreSQL 版本(16、17)构建的镜像,其中 PostGIS 及其依赖项均从各自的 master 分支编译。
该镜像会为父镜像(postgres)创建的默认数据库自动安装以下扩展,其中部分已完成初始化:
| 扩展名称 | 是否初始化 |
|---|---|
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 的预配置模板库。
支持架构:amd64(即 X86-64)
新手推荐版本:postgis/postgis:17-3.5、postgis/postgis:16-3.5
| DockerHub 镜像 | Dockerfile 链接 | 操作系统 | PostgreSQL 版本 | PostGIS 版本 |
|---|---|---|---|---|
| postgis/postgis:13-3.5 | Dockerfile | debian:bullseye | 13 | 3.5.2 |
| postgis/postgis:14-3.5 | Dockerfile | debian:bullseye | 14 | 3.5.2 |
| postgis/postgis:15-3.5 | Dockerfile | debian:bullseye | 15 | 3.5.2 |
| postgis/postgis:16-3.5 | Dockerfile | debian:bullseye | 16 | 3.5.2 |
| postgis/postgis:17-3.5 | Dockerfile | debian:bullseye | 17 | 3.5.2 |
| postgis/postgis:18-3.6 | Dockerfile | debian:trixie | 18 | 3.6.0 |
| DockerHub 镜像 | Dockerfile 链接 | 操作系统 | PostgreSQL 版本 | PostGIS 版本 |
|---|---|---|---|---|
| postgis/postgis:13-3.5-alpine | Dockerfile | alpine:3.22 | 13 | 3.5.3 |
| postgis/postgis:14-3.5-alpine | Dockerfile | alpine:3.22 | 14 | 3.5.3 |
| postgis/postgis:15-3.5-alpine | Dockerfile | alpine:3.22 | 15 | 3.5.3 |
| postgis/postgis:16-3.5-alpine | Dockerfile | alpine:3.22 | 16 | 3.5.3 |
| postgis/postgis:17-3.5-alpine | Dockerfile | alpine:3.22 | 17 | 3.5.3 |
| postgis/postgis:17-3.6-alpine | Dockerfile | alpine:3.22 | 17 | 3.6.0 |
| postgis/postgis:18-3.6-alpine | Dockerfile | alpine:3.22 | 18 | 3.6.0 |
提供 alpha、beta、rc(发布候选版)及开发版(标记为 ~master),适用于测试新功能。开发版基于 PostgreSQL 16/17,PostGIS 及其依赖从 master 分支编译,模板更新需手动触发(可能延迟数周)。
| DockerHub 镜像 | Dockerfile 链接 | 操作系统 | PostgreSQL 版本 | PostGIS 版本 |
|---|---|---|---|---|
| postgis/postgis:16-master | Dockerfile | debian:bullseye | 16 | 开发版(postgis/geos/proj/gdal) |
| postgis/postgis:17-master | Dockerfile | debian:bullseye | 17 | 开发版(postgis/geos/proj/gdal) |
运行基础 PostGIS 数据库容器:
bashdocker run --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d postgis/postgis
更多启动与管理细节,参考 官方 postgres 镜像文档。
bashdocker exec -ti some-postgis psql -U postgres
bashdocker network create some-network
bashdocker run --name some-postgis --network some-network -e POSTGRES_PASSWORD=mysecretpassword -d postgis/postgis
bashdocker run -it --rm --network some-network postgis/postgis psql -h some-postgis -U postgres
关于创建和使用空间数据库的更多选项,参考 PostGIS 官方文档。
继承自官方 PostgreSQL 镜像,支持以下环境变量:
POSTGRES_PASSWORD:数据库密码POSTGRES_USER:管理员用户名(默认 postgres)POSTGRES_DB:默认数据库名(未指定时与用户名一致)POSTGRES_INITDB_ARGS:初始化数据库参数POSTGRES_INITDB_WALDIR:WAL 目录路径POSTGRES_HOST_AUTH_METHOD:主机认证方式PGDATA:数据存储路径注意:仅当容器首次启动且数据目录为空时,这些变量才生效;若数据目录已存在,启动时将忽略变量配置。
镜像环境变量与 PostgreSQL 客户端库(libpq)的变量(如PGDATABASE、PGUSER)不同,需注意区分。
详细说明:[***] 故障排查建议
若遇到问题,建议先测试是否可复现于 官方 PostgreSQL 镜像,再按以下方向排查:
PostgreSQL 相关:
PostGIS 相关:
新手参考:
Docker 官方 PostgreSQL 使用指南:[***]
默认配置下,云环境中暴露端口的容器易受***(如加密货币挖矿程序入侵)。需注意:
-p 5432:5432 而非 -p 127.0.0.1:5432:5432),端口将对外暴露,且 Docker 自身 iptables 规则可能覆盖 UFW 配置。bashdocker run ... -e POSTGRES_INITDB_ARGS="-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 官方 FAQ:[***]详细:[***]bashtrivy image --ignore-unfixed postgis/postgis:16-3.5-alpine # 扫描 PostGIS 镜像 trivy image --ignore-unfixed postgres:16-alpine # 扫描基础 postgres 镜像
postgis/postgis 镜像每周一自动重建以包含最新依赖更新,但 Debian/Alpine 系统及上游 postgres 镜像的更新不受本项目控制,部分问题可能无法立即修复。欢迎提出安全优化建议。
若因 PostGIS 更新导致错误(如 OperationalError: could not access file "$libdir/postgis-X.X"),执行以下命令更新:
bashdocker exec some-postgis update-postgis.sh
该命令为幂等操作,重复执行无害,输出类似:
Updating PostGIS extensions template_postgis to X.X.X NOTICE: version "X.X.X" of extension "postgis" is already installed ...
本项目是 PostGIS 官方项目 的一部分,贡献规则较灵活:
./update.sh 脚本。参见:[***]
以下是 postgis/postgis 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务