本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

PostGIS Docker镜像是基于PostgreSQL官方镜像构建的扩展镜像,集成了PostGIS空间数据库扩展,支持amd64(x86_64)和arm64(AArch64)两种架构。该镜像旨在提供开箱即用的空间数据库服务,允许用户存储、查询和分析地理空间数据,同时继承了PostgreSQL的稳定性和功能完整性。
GEOMETRY、GEOGRAPHY)、空间索引(GiST、SP-GiST)及空间分析函数(如ST_Distance、ST_Intersects、ST_Area等)。通过docker run命令启动容器,需至少指定超级用户密码(POSTGRES_PASSWORD):
docker run --name postgis-demo -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgis/postgis:latest
--name postgis-demo:指定容器名称。-e POSTGRES_PASSWORD=mysecretpassword:设置超级用户密码(必填)。-p 5432:5432:映射容器5432端口到宿主机,允许外部客户端连接。-d:后台运行容器。postgis/postgis:latest:镜像名称及标签(latest为最新稳定版,可指定具体版本如16-3.4)。为避免容器销毁导致数据丢失,需将数据库数据目录(/var/lib/postgresql/data)挂载到宿主机或Docker卷:
# 创建命名卷 docker volume create postgis-data # 挂载卷启动容器 docker run --name postgis-demo \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgis-data:/var/lib/postgresql/data \ -p 5432:5432 \ -d postgis/postgis:latest
docker run --name postgis-demo \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /宿主机路径/data:/var/lib/postgresql/data \ -p 5432:5432 \ -d postgis/postgis:latest
通过环境变量自定义数据库初始化参数,常用变量如下表:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
POSTGRES_PASSWORD | 数据库超级用户密码(必填) | 无 |
POSTGRES_USER | 超级用户名 | postgres |
POSTGRES_DB | 初始数据库名称 | 与POSTGRES_USER相同 |
POSTGRES_INITDB_ARGS | 传递给initdb的额外参数(如编码、排序规则) | 无 |
PGDATA | 数据库数据存储路径 | /var/lib/postgresql/data |
POSTGRES_HOST_AUTH_METHOD | 主机认证方式(如md5、trust,生产环境建议md5) | md5 |
示例:指定用户名、数据库名及编码:
docker run --name postgis-demo \ -e POSTGRES_USER=gisuser \ -e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRES_DB=gisdb \ -e POSTGRES_INITDB_ARGS="--encoding=UTF8 --lc-collate=C --lc-ctype=en_US.UTF-8" \ -p 5432:5432 \ -d postgis/postgis:latest
容器启动时会自动初始化数据库,默认仅创建基础PostgreSQL环境。如需创建包含PostGIS扩展的数据库,可通过以下方式:
进入容器并连接数据库,执行PostGIS扩展启用命令:
# 进入容器 docker exec -it postgis-demo psql -U gisuser -d gisdb # 在psql终端执行(启用PostGIS核心及拓扑扩展) CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; -- 可选:启用额外扩展(如空间索引优化、栅格数据支持) CREATE EXTENSION postgis_raster; CREATE EXTENSION pgrouting;
将SQL脚本挂载到容器/docker-entrypoint-initdb.d目录,容器初始化时会按文件名顺序执行脚本:
在宿主机创建脚本文件(如init-postgis.sql):
-- 创建扩展 CREATE EXTENSION IF NOT EXISTS postgis; CREATE EXTENSION IF NOT EXISTS postgis_topology; -- 创建测试表(示例) CREATE TABLE IF NOT EXISTS points ( id SERIAL PRIMARY KEY, name VARCHAR(50), location GEOMETRY(Point, 4326) -- WGS84坐标系点类型 );
启动容器时挂载脚本目录:
docker run --name postgis-demo \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /宿主机路径/init-scripts:/docker-entrypoint-initdb.d \ -p 5432:5432 \ -d postgis/postgis:latest
通过docker-compose.yml定义服务,简化多容器协调或持久化配置:
version: '3.8' services: postgis: image: postgis/postgis:latest container_name: postgis-service environment: POSTGRES_PASSWORD: mysecretpassword # 超级用户密码 POSTGRES_USER: gisadmin # 自定义用户名 POSTGRES_DB: spatialdb # 初始数据库名 POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C" # 编码配置 ports: - "5432:5432" # 端口映射 volumes: - postgis-data:/var/lib/postgresql/data # 数据持久化卷 - ./init-scripts:/docker-entrypoint-initdb.d # 初始化脚本目录 restart: unless-stopped # 异常退出后自动重启 volumes: postgis-data: # 命名卷,数据独立于容器生命周期
启动服务:
docker-compose up -d
可通过挂载自定义postgresql.conf覆盖默认配置,例如调整连接数、内存分配:
从容器复制默认配置文件:
docker cp postgis-demo:/var/lib/postgresql/data/postgresql.conf ./custom-postgresql.conf
修改配置(如max_connections = 200),并重新挂载:
docker run --name postgis-demo \ -e POSTGRES_PASSWORD=mysecretpassword \ -v ./custom-postgresql.conf:/var/lib/postgresql/data/postgresql.conf \ -p 5432:5432 \ -d postgis/postgis:latest
PostGIS扩展参数(如空间索引优化、坐标转换规则)可通过postgresql.conf或会话级SQL调整:
-- 会话级设置:启用空间索引并行扫描 SET postgis.enable_parallel_seqscan = on; -- 全局设置(需在postgresql.conf中添加) postgis.gdal_enabled_drivers = 'ENABLE_ALL' # 启用所有GDAL驱动(栅格数据支持)
POSTGRES_PASSWORD需使用强密码,并通过环境变量注入(避免硬编码)。docker volume inspect获取卷路径后备份文件)。postgis/postgis:latest默认支持多架构)。postgis/postgis:16-3.4对应PostgreSQL 16 + PostGIS 3.4),具体参考PostGIS官方兼容性矩阵。--memory、--cpus限制容器资源,避免过度占用宿主机资源。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429