
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://github.com/submarcos/docker-postgis/workflows/Docker%20PostGIS%20CI/badge.svg](https://github.com/submarcos/docker-postgis/actions)
juank/postgis镜像提供了运行已安装http://postgis.net/%E6%89%A9%E5%B1%95%E7%9A%84Postgres%E7%9A%84%E6%A0%87%E7%AD%BE%E3%80%82%E8%AF%A5%E9%95%9C%E5%83%8F%E5%9F%BA%E4%BA%8E%E5%AE%98%E6%96%B9https://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 docker.xuanyuan.run/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 docker.xuanyuan.run/postgis/postgis # 客户端容器 docker run -it --rm --network some-network docker.xuanyuan.run/postgis/postgis psql -h some-postgis -U postgres
有关连接不同容器的更多详细信息和替代方法,请查看https://registry.hub.docker.com/_/postgres/%E6%96%87%E6%A1%A3%E5%92%8Chttps://docs.docker.com/network/%E6%96%87%E6%A1%A3%E3%80%82
有关创建和使用空间启用数据库的更多选项,请参见http://postgis.net/docs/postgis_installation.html#create_new_db_extensions%E3%80%82
由于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镜像的环境变量与https://www.postgresql.org/docs/current/libpq-envars.html%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%88%60PGDATABASE%60%E3%80%81%60PGUSER%60%E3%80%81%60PGPASSWORD%60%EF%BC%89%E4%B8%8D%E5%90%8C%E3%80%82
故障排除通常具有挑战性。重要的是要知道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规则(https://docs.docker.com/network/iptables/%EF%BC%89%E3%80%82-c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key还请扫描基础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项目https://postgis.net/development/rfcs/rfc05/#projects-under-postgis-umbrella%EF%BC%8C%E5%B9%B6%E9%81%B5%E5%BE%AA%E6%9B%B4%E7%81%B5%E6%B4%BB%E7%9A%84%E8%B4%A1%E7%8C%AE%E8%A7%84%E5%88%99%E3%80%82
./update.sh脚本。参见:https://postgis.net/community/conduct/
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 juank/postgis 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: