
logicwind/postgres-partman-cron本镜像基于官方PostgreSQL镜像构建,预集成了pg_partman和pg_cron两个扩展。pg_partman是PostgreSQL的表分区管理工具,支持自动创建和维护时间或数值分区;pg_cron是PostgreSQL的定时任务调度扩展,允许在数据库内部直接调度SQL任务。本镜像旨在为用户提供开箱即用的分区管理和定时任务能力,减少手动配置工作。
bashdocker run -d \ --name postgres-partman-cron \ -e POSTGRES_USER=myuser \ -e POSTGRES_PASSWORD=mypassword \ -e POSTGRES_DB=mydb \ -e CRON_DATABASE_NAME=mydb \ # 指定pg_cron任务存储的数据库 -p 5432:5432 \ [镜像名称]:[标签]
yamlversion: '3' services: postgres: image: [镜像名称]:[标签] container_name: postgres-partman-cron environment: POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword POSTGRES_DB: mydb CRON_DATABASE_NAME: mydb # 可选,默认使用POSTGRES_DB ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
| POSTGRES_USER | 数据库超级用户 | postgres |
| POSTGRES_PASSWORD | 超级用户密码 | 无(建议必须设置) |
| POSTGRES_DB | 初始数据库名称 | POSTGRES_USER的值 |
| CRON_DATABASE_NAME | pg_cron任务存储的数据库 | POSTGRES_DB的值 |
容器启动后,可通过以下步骤验证扩展:
bashpsql -h localhost -U myuser -d mydb
sqlSELECT * FROM pg_extension WHERE extname = 'pg_partman';
sqlSELECT * FROM pg_extension WHERE extname = 'pg_cron';
sql-- 创建父表 CREATE TABLE measurements ( id SERIAL, log_time TIMESTAMPTZ NOT NULL, value NUMERIC NOT NULL ); -- 使用pg_partman创建时间分区(按天) SELECT partman.create_parent( p_parent_table => 'public.measurements', p_control => 'log_time', p_type => 'time', p_interval => '1 day', p_premake => 3 -- 预创建3个未来分区 );
sql-- 每天凌晨2点清理30天前的分区数据 SELECT cron.schedule( 'clean_old_partitions', '0 2 * * *', $$SELECT partman.drop_old_partitions('public.measurements', p_retention := '30 days')$$ ); -- 查看所有定时任务 SELECT * FROM cron.job;
cron模式下,需确保该数据库存在
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务