
pgautoupgrade/pgautoupgradepgautoupgrade 是一个基于官方 PostgreSQL 镜像(如 postgres:17-alpine)构建的 Docker 容器,核心功能是在启动时自动检测并升级数据库文件。该镜像支持从 PostgreSQL 9.5 及以上版本升级至目标版本,通过 pg_upgrade 工具的 --link 选项实现快速原地升级,并可自动启动数据库服务。主要用途是简化 PostgreSQL 版本升级流程,解决手动升级带来的复杂性和兼容性问题,适用于需要长期维护且需保持数据库版本最新的场景。
pg_upgrade --link 工具,实现原地升级以缩短升级时间。17-alpine)和 Debian(如 17-bookworm)两种基础镜像,支持指定目标 PostgreSQL 版本(如 17、16 等)。根据目标 PostgreSQL 版本及基础系统选择标签:
| 标签格式 | 说明 | 示例 |
|---|---|---|
latest | 最新 PostgreSQL 版本(Alpine 基础) | pgautoupgrade/pgautoupgrade:latest |
X-alpine | 指定版本(Alpine 基础) | pgautoupgrade/pgautoupgrade:17-alpine |
X-bookworm | 指定版本(Debian Bookworm 基础) | pgautoupgrade/pgautoupgrade:17-bookworm |
docker run 启动bashdocker run -d \ --name pgautoupgrade \ -v /path/to/local/data:/var/lib/postgresql/data \ # 挂载宿主机数据目录 -e POSTGRES_PASSWORD=your_secure_password \ # 数据库管理员密码(必填) -p 5432:5432 \ # 暴露数据库端口 pgautoupgrade/pgautoupgrade:17-alpine # 目标镜像(Alpine 基础)
yamlversion: '3' services: postgres: image: pgautoupgrade/pgautoupgrade:17-alpine container_name: pgautoupgrade volumes: - postgres_data:/var/lib/postgresql/data # 使用命名卷持久化数据 environment: - POSTGRES_PASSWORD=your_secure_password # 数据库管理员密码(必填) - POSTGRES_USER=postgres # 管理员用户名(默认:postgres) - POSTGRES_DB=postgres # 初始数据库名(默认:postgres) ports: - "5432:5432" # 端口映射 volumes: postgres_data: # 定义命名卷
添加环境变量 PGAUTO_ONESHOT=yes,容器仅执行升级操作,完成后自动退出,不启动数据库服务:
bashdocker run -it \ --name pgauto-upgrade \ -v /path/to/local/data:/var/lib/postgresql/data \ -e POSTGRES_PASSWORD=your_secure_password \ -e PGAUTO_ONESHOT=yes \ pgautoupgrade/pgautoupgrade:17-alpine
默认升级后会重建所有数据库索引(耗时较长),可通过 PGAUTO_REINDEX=no 禁用:
bashdocker run -d \ --name pgautoupgrade \ -v /path/to/local/data:/var/lib/postgresql/data \ -e POSTGRES_PASSWORD=your_secure_password \ -e PGAUTO_REINDEX=no \ pgautoupgrade/pgautoupgrade:17-alpine
postgres:16-bookworm):升级时需选择 Debian 目标镜像(如 17-bookworm),避免跨系统兼容性问题。17-alpine)。Debian 基础镜像部署示例:
bashdocker run -d \ --name pgautoupgrade-debian \ -v /path/to/local/data:/var/lib/postgresql/data \ -e POSTGRES_PASSWORD=your_secure_password \ pgautoupgrade/pgautoupgrade:17-bookworm
| 环境变量名 | 说明 | 取值范围 | 默认值 |
|---|---|---|---|
POSTGRES_PASSWORD | 数据库管理员(postgres 用户)密码,必填项 | 字符串 | 无 |
POSTGRES_USER | 数据库管理员用户名 | 字符串 | postgres |
POSTGRES_DB | 初始数据库名称 | 字符串 | postgres |
PGAUTO_ONESHOT | 是否启用“One shot”模式(仅升级,不启动数据库) | yes/no | no |
PGAUTO_REINDEX | 升级后是否重建所有数据库索引 | yes/no | yes |
重要:本镜像通过 pg_upgrade --link 执行原地升级,若过程中发生错误可能导致数据损坏。升级前必须备份数据库数据目录,确保可恢复。
postgres:16-bookworm)升级时,需选择 Debian 目标镜像(如 17-bookworm),避免跨系统兼容性问题。17-alpine)。本镜像源码托管于 GitHub:[***]
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务