tracktor/postgres本镜像基于官方PostgreSQL数据库构建,预集成PostGIS地理空间扩展和pg_cron定时任务调度工具。旨在提供开箱即用的数据库解决方案,满足地理空间数据存储与分析、定时任务自动化执行等场景需求,简化包含地理信息和定时任务的应用部署流程。
bashdocker run -d \ --name postgres-gis-cron \ -e POSTGRES_PASSWORD=SecurePass123 \ -e POSTGRES_USER=appuser \ -e POSTGRES_DB=gisdb \ -e CRON_DATABASE_NAME=gisdb \ -v postgres-data:/var/lib/postgresql/data \ -p 5432:5432 \ [镜像名称]:[版本标签]
yamlversion: '3.8' services: postgres: image: [镜像名称]:[版本标签] container_name: postgres-gis-cron environment: POSTGRES_PASSWORD: SecurePass123 POSTGRES_USER: appuser POSTGRES_DB: gisdb CRON_DATABASE_NAME: gisdb # 指定启用pg_cron的数据库 volumes: - postgres-data:/var/lib/postgresql/data # 数据持久化 - ./init-scripts:/docker-entrypoint-initdb.d # 初始化脚本挂载(可选) ports: - "5432:5432" restart: unless-stopped volumes: postgres-data:
启动服务:
bashdocker-compose up -d
| 环境变量 | 描述 | 默认值 |
|---|---|---|
POSTGRES_PASSWORD | 数据库超级用户密码(必填) | 无 |
POSTGRES_USER | 数据库超级用户名 | postgres |
POSTGRES_DB | 初始数据库名称 | POSTGRES_USER值 |
CRON_DATABASE_NAME | 指定启用pg_cron的数据库名称 | postgres |
POSTGRES_INITDB_ARGS | 数据库初始化参数(如字符集:--encoding=UTF8 --lc-collate=C) | 无 |
镜像默认已安装PostGIS和pg_cron扩展,首次连接数据库后需手动启用:
bashdocker exec -it postgres-gis-cron psql -U appuser -d gisdb
sql-- 启用PostGIS核心扩展 CREATE EXTENSION postgis; -- 启用PostGIS拓扑扩展(可选) CREATE EXTENSION postgis_topology; -- 启用pg_cron扩展(需与CRON_DATABASE_NAME匹配) CREATE EXTENSION pg_cron;
sql-- 验证PostGIS版本 SELECT postgis_version(); -- 验证pg_cron状态 SELECT cron.schedule('test-job', '* * * * *', 'SELECT 1;'); -- 创建测试任务 SELECT jobid, schedule, command FROM cron.job; -- 查看任务列表 SELECT cron.unschedule('test-job'); -- 删除测试任务
sql-- 每天凌晨2点删除30天前的日志数据 CREATE TABLE IF NOT EXISTS app_logs (id SERIAL, log_time TIMESTAMP, message TEXT); SELECT cron.schedule( 'clean-old-logs', -- 任务名称 '0 2 * * *', -- 每天2点执行(cron语法:分 时 日 月 周) 'DELETE FROM app_logs WHERE log_time < NOW() - INTERVAL ''30 days'';' );
sql-- 每周一凌晨生成上周销售报表 CREATE TABLE IF NOT EXISTS weekly_sales_report ( report_date DATE PRIMARY KEY, total_sales NUMERIC, generated_at TIMESTAMP DEFAULT NOW() ); SELECT cron.schedule( 'generate-sales-report', '0 0 * * 1', -- 每周一凌晨0点执行 $$INSERT INTO weekly_sales_report (report_date, total_sales) SELECT DATE_TRUNC('week', NOW() - INTERVAL '1 week')::DATE, SUM(amount) FROM sales WHERE sale_date >= DATE_TRUNC('week', NOW() - INTERVAL '1 week') AND sale_date < DATE_TRUNC('week', NOW());$$ );
通过Docker卷挂载/var/lib/postgresql/data目录确保数据持久化,避免容器重启后数据丢失:
bash-v postgres-data:/var/lib/postgresql/data
(postgres-data为本地卷名称,自动创建并映射到容器数据目录)
CREATE INDEX idx_geo ON table USING GIST (geom_column););pg_cron任务避免设置过高频率(如每秒执行),防止资源占用过高。GRANT cron授权才能管理定时任务,遵循最小权限原则。14-postgis3.3-pgcron1.4表示PostgreSQL 14 + PostGIS 3.3 + pg_cron 1.4)。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
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 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务