
imresamu/docker-postgis-test:
默认VOLUME路径已变更为/var/lib/postgresql
postgis/postgis镜像提供用于运行已安装PostGIS扩展的Postgres的标签。该镜像基于官方postgres镜像,提供适用于PostgreSQL 13、14、15、16、17和18版本的PostGIS 3.5.x和3.6.x的Debian和Alpine变体。此外,还提供基于PostgreSQL 16和17的镜像变体,使用各自主分支构建PostGIS及其依赖项,标记为16-master和17-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的PostGIS启用模板数据库。
支持架构:amd64(x86-64)
新用户推荐版本:
postgis/postgis:18-3.6
/var/lib/postgresql(PostgreSQL 18+中变更)postgis/postgis:17-3.5
/var/lib/postgresql/data| 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.1 |
| DockerHub镜像 | Dockerfile | 操作系统 | PostgreSQL | PostGIS |
|---|---|---|---|---|
| postgis/postgis:13-3.5-alpine | Dockerfile | alpine:3.22 | 13 | 3.5.4 |
| postgis/postgis:14-3.5-alpine | Dockerfile | alpine:3.22 | 14 | 3.5.4 |
| postgis/postgis:15-3.5-alpine | Dockerfile | alpine:3.22 | 15 | 3.5.4 |
| postgis/postgis:16-3.5-alpine | Dockerfile | alpine:3.22 | 16 | 3.5.4 |
| postgis/postgis:17-3.5-alpine | Dockerfile | alpine:3.22 | 17 | 3.5.4 |
| postgis/postgis:17-3.6-alpine | Dockerfile | alpine:3.22 | 17 | 3.6.1 |
| postgis/postgis:18-3.6-alpine | Dockerfile | alpine:3.22 | 18 | 3.6.1 |
*-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启用数据库容器,可按以下方式启动:
shdocker run --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d postgis/postgis
有关启动和控制Postgres容器的详细说明,请参阅postgres镜像文档。
启动数据库容器后,可直接连接到运行中的容器:
shdocker exec -ti some-postgis psql -U postgres
或启动新容器作为客户端,使用用户定义网络连接两个容器:
shdocker 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
更多连接方式详见postgres镜像文档和Docker网络文档。
创建和使用空间数据库的更多选项,请参阅PostGIS文档。
由于docker-postgis是官方Docker PostgreSQL仓库的扩展,所有官方支持的环境变量在此同样适用:
POSTGRES_PASSWORDPOSTGRES_USERPOSTGRES_DBPOSTGRES_INITDB_ARGSPOSTGRES_INITDB_WALDIRPOSTGRES_HOST_AUTH_METHODPGDATA ⚠️ Docker PostgreSQL >=18中变更!⚠️详情请阅读docker-postgres README
PGDATA卷路径变更从PostgreSQL 18开始,默认数据目录(VOLUME)路径已变更。这影响所有**postgis/postgis:18-***及更新镜像。
卷路径摘要:
| 镜像名称 | 镜像标签范围 | --volume路径 |
|---|---|---|
postgis/postgis | 18-* … | /var/lib/postgresql |
postgis/postgis | 13-* … 17-* | /var/lib/postgresql/data |
请为18+镜像调整卷挂载。更多详情见上游变更。
Docker特定环境变量(如POSTGRES_DB、POSTGRES_USER、POSTGRES_PASSWORD)仅在容器使用空数据目录启动时生效。容器启动时,任何预先存在的数据库将保持不变。
如需重新初始化或更改设置,请先删除或重新创建卷。
libpq环境变量请注意,Docker环境变量与libpq — C库使用的变量不同。后者包括PGDATABASE、PGUSER、PGPASSWORD等客户端工具使用的变量。
故障排除可能具有挑战性。需注意docker-postgis是官方Docker PostgreSQL仓库的扩展,因此遇到问题时,建议先测试是否可使用官方PostgreSQL Docker镜像复现。若可复现,建议基于此搜索解决方案。推荐以下资源:
若问题与PostGIS相关:
若无postgres docker使用经验,建议阅读:
在云环境中,默认设置下这些镜像可能存在风险,若端口开放,极易遭受加密货币挖矿程序感染(详见)。
-p 5432:5432而非-p 127.0.0.1:5432:5432)将可从外部访问。即使配置UFW阻止该端口,Docker也会管理自己的iptables规则(详见)。每个postgis/postgis:18-*镜像都包含io_uring异步I/O功能。但部分容器运行时(如containerd)因安全考虑曾禁用io_uring支持。如需试用此功能,请自行承担风险,并确保在seccomp配置文件中显式启用io_uring。
-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:5432postgres Docker镜像的潜在安全问题。若安全扫描器报告漏洞(CVE),请查看[Docker Library FAQmanifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务