
可配置的PostgreSQL服务器,支持备份、快照、备用节点、热备用、SSL/TLS等功能,通过环境变量实现简化配置。包含快速入门示例,源码托管于GitHub:https://github.com/gjrtimmer/docker-postgresql%E3%80%82
bashdocker run --detach -p 5432:5432 gjrtimmer/postgresql:latest
当前支持以下PostgreSQL版本:
容器基于LinuxServer的Alpine Linux构建。
以下是主要功能,完整功能请参考完整文档:
| 功能 | 描述 |
|---|---|
| 主机文件权限 | 设置数据文件权限 |
| 备份 | 通过脚本或docker-compose文件轻松备份运行中的主节点 |
| 快照 | 创建服务器快照并运行,便于开发者克隆生产环境数据库进行本地开发 |
| 备用节点 | 为主节点添加备用节点 |
| 热备用 | 添加热备用节点,支持只读查询 |
| TLS/SSL | 通过环境变量轻松配置SSL/TLS加密 |
| 自动升级/迁移 | 自动数据库版本升级与迁移 |
| 启动时创建数据库 | 容器启动时创建多个数据库 |
| 数据库模板定义 | 配置创建新数据库时使用的模板 |
| 数据库初始化 | 通过SQL文件初始化数据库,支持按数据库指定不同SQL文件 |
| 扩展支持 | 通过环境变量加载数据库扩展 |
| PL/Perl | 支持PL/Perl语言 |
| PL/Python | 支持PL/Python语言 |
| PL/TCL | 支持PL/TCL语言 |
| pg_cron | 启用PG_CRON数据库调度器,支持数据库定时任务 |
| 性能配置 | 通过环境变量配置性能参数 |
| 自动集群管理 | 使用repmgr实现自动集群管理 |
完整的功能/环境变量列表请参考:环境变量
设置容器时区,默认值为UTC。通过TZ变量指定时区,需使用时区数据库格式。
示例:TZ=Europe/Amsterdam
容器基于LinuxServer的Alpine Linux构建,支持PUID和PGID变量。
使用PUID和PGID可将容器内部用户映射到主机用户。所有容器均采用此用户映射方式,应正确配置。 更多信息:linuxserver: 理解PUID/PGID
| 环境变量 | 默认值 | 描述 |
|---|---|---|
| PUID | 1000 | 将用户所有权映射到指定值 |
| PGID | 1000 | 将组所有权映射到指定值 |
默认所有数据存储在/config挂载点。需将/config映射到卷或主机目录以实现持久化存储。部分存储位置可通过环境变量配置,完整列表见环境变量。
| 环境变量 | 默认值 | 描述 |
|---|---|---|
| HOME | /config | 默认卷 |
| PG_HOME | /config/data | PostgreSQL主目录 |
| PG_DATA_DIR | /config/data/{VERSION}/main | PostgreSQL数据目录 |
| PG_CERTS_DIR | /config/certs | 证书目录 |
| PG_LOG_DIR | /config/logs | 日志目录 |
| PG_INIT_DB_DIR | /config/initdb.d | 数据库初始化脚本目录 |
基于linuxserver.io的Alpine基础镜像,可通过/config/custom-cont-init.d目录提供自定义初始化脚本。
基于linuxserver.io的Alpine基础镜像,可通过/config/custom-services.d目录提供自定义服务。
启动容器时通过DB_NAME变量创建PostgreSQL数据库。
示例:DB_NAME=dbname
默认通过复制系统数据库template1创建数据库,可通过DB_TEMPLATE参数指定其他模板(参考模板数据库)。
支持创建多个数据库,使用逗号分隔数据库名:
示例:DB_NAME=dbname1,dbname2(创建dbname1和dbname2两个数据库)
支持多数据库初始化,可通过PG_INIT_DB_DIR(/config/initdb.d)目录提供SQL文件,文件命名格式为<ID>-<DB_NAME>-<附加名称>.sql,其中ID用于指定加载顺序。
可用于全局配置或特定数据库初始化。例如:
bashPG_USER=postgres PG_PASS=******** DB_USER=maintenance DB_PASS=******** DB_NAME=orders,customers
上述配置创建orders和customers数据库,用户maintenance拥有访问权限。可放置如下SQL文件:
bash5-postgres-create-users.sql 10-orders-init.sql 10-orders-create-users.sql 10-customers-init.sql 10-customers-create-users.sql
也可为主数据库postgres提供初始化脚本,只需在文件名中包含postgres。
通过DB_EXTENSION环境变量启用扩展,多个扩展用逗号分隔。扩展将为DB_NAME创建的所有数据库启用。
容器预装postgres contrib模块,扩展列表见扩展概述。
创建PostgreSQL服务器备份需主节点允许复制连接且有可用WAL发送器,支持非本镜像的PostgreSQL服务器备份。
备份通过
pg_basebackup生成
要求:
replica或logical备份容器需配置REPLICATION_*变量:
REPLICATION_MODE=backup(必填)使用示例:examples/backup
快照功能可连接主节点克隆数据库并独立运行。与备用节点的区别:备用节点为只读且持续同步主节点数据(流复制),快照为可读写且克隆后不再同步主节点更新。适用于开发者快速克隆生产数据库进行本地开发/调试。
快照通过
pg_basebackup生成
快照容器需配置REPLICATION_*变量:
REPLICATION_MODE=snapshot(必填)使用示例:examples/snapshot
备用服务器配置中,主节点处理读写操作,数据复制到备用节点。支持热备用服务器(允许只读查询)。
备用容器需配置REPLICATION_*变量:
REPLICATION_MODE=standby(必填)配置
PG_STANDBY_HOT变量启用热备用。
使用示例:examples/master-standby
镜像集成repmgr作为集群管理器,支持自动集群编排与故障转移。
重要
尽管
repmgr可用于生产环境,但镜像中的实现尚未完全测试。部分依赖(如SSH访问)仍在开发中。 请自行评估风险使用。
通过REPMGR=enabled启用repmgr,配置选项见REPMGR配置。
以下是 gjrtimmer/postgresql 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务