
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像基于官方PostgreSQL数据库镜像构建,预安装并配置了PostGIS(空间数据库扩展)和pgRouting(路径规划扩展)。PostGIS提供空间数据存储、索引及分析能力,pgRouting则扩展了路径计算功能,适用于需要空间数据处理和路径分析的应用场景,无需手动安装配置扩展组件。
启动容器
bashdocker run -d \ --name postgis-pgrouting \ -e POSTGRES_PASSWORD=your_secure_password \ -e POSTGRES_USER=dbuser \ -e POSTGRES_DB=gisdb \ -p 5432:5432 \ -v postgres_data:/var/lib/postgresql/data \ [镜像名称]
参数说明:
-e POSTGRES_PASSWORD:数据库超级用户密码(必填)-e POSTGRES_USER:自定义数据库用户名(默认postgres)-e POSTGRES_DB:初始数据库名称(默认与用户名相同)-p 5432:5432:端口映射,主机端口:容器端口-v postgres_data:/var/lib/postgresql/data:数据卷挂载,持久化存储数据库文件[镜像名称]:实际使用的镜像标识(如postgis/postgis:latest-pgrouting)验证扩展安装
进入容器终端:
bashdocker exec -it postgis-pgrouting bash
连接数据库:
bashpsql -U dbuser -d gisdb
检查扩展版本:
sql-- 验证PostGIS安装 SELECT postgis_version(); -- 验证pgRouting安装 SELECT pgr_version();
yamlversion: '3.8' services: postgis-db: image: [镜像名称] container_name: postgis-pgrouting environment: POSTGRES_PASSWORD: your_secure_password POSTGRES_USER: dbuser POSTGRES_DB: gisdb POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C" ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d # 挂载初始化脚本 restart: unless-stopped volumes: postgres_data:
启动服务:
bashdocker-compose up -d
核心环境变量
| 环境变量 | 说明 | 默认值 |
|---|---|---|
POSTGRES_PASSWORD | 数据库超级用户密码 | 无(必填) |
POSTGRES_USER | 数据库用户名 | postgres |
POSTGRES_DB | 初始数据库名称 | 与POSTGRES_USER相同 |
POSTGRES_INITDB_ARGS | 数据库初始化参数 | 无 |
PGDATA | 数据库数据存储路径 | /var/lib/postgresql/data |
创建空间表并添加索引
sql-- 创建道路网络表 CREATE TABLE road_network ( id SERIAL PRIMARY KEY, name VARCHAR(100), geometry LineString, -- 空间几何列 length FLOAT, -- 路段长度(公里) speed_limit INT -- 限速(公里/小时) ); -- 添加空间索引(优化查询性能) CREATE INDEX road_network_geom_idx ON road_network USING GIST (geometry);
导入空间数据
sql-- 插入示例道路数据(WKT格式,EPSG:4326坐标系统) INSERT INTO road_network (name, geometry, length, speed_limit) VALUES ('主干道A', ST_GeomFromText('LINESTRING(116.397 39.908, 116.407 39.908, 116.417 39.908)', 4326), 2.2, 60), ('次干道B', ST_GeomFromText('LINESTRING(116.407 39.908, 116.407 39.918, 116.407 39.928)', 4326), 2.1, 40);
使用pgRouting计算路径
sql-- 1. 创建网络拓扑(需先执行一次) SELECT pgr_createTopology( 'road_network', -- 表名 0.0001, -- 容差(度,用于节点匹配) 'geometry', -- 几何列名 'id' -- 主键列名 ); -- 2. 计算最短路径(基于长度) SELECT seq, node, edge, cost, agg_cost, ST_AsText(geometry) AS path_geometry FROM pgr_dijkstra( 'SELECT id, source, target, length AS cost FROM road_network', -- 边表查询 1, -- 起点节点ID 5, -- 终点节点ID false -- 是否返回路径几何 ) AS route JOIN road_network ON route.edge = road_network.id;
-v参数)挂载数据目录,避免容器删除导致数据丢失shared_buffers、work_mem)并合理创建空间索引postgis/postgis:15-3.4-pgrouting-3.5)以确保扩展版本兼容性您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 manz/postgres 相关的常用 Docker 镜像,适用于 关系型数据库、复杂查询、数据完整性 等不同场景: