
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Docker PG Backup是一个轻量级Docker容器,专门用于执行PostgreSQL和PostGIS数据库的备份任务。它设计用于与https://github.com/kartoza/docker-postgis%E9%95%9C%E5%83%8F%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%EF%BC%8C%E9%BB%98%E8%AE%A4%E9%85%8D%E7%BD%AE%E4%B8%BA%E6%AF%8F%E6%99%9A23%E7%82%B9%E8%87%AA%E5%8A%A8%E6%89%A7%E8%A1%8C%E5%A4%87%E4%BB%BD%EF%BC%8C%E5%B9%B6%E5%B0%86%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E6%8C%89%E5%B9%B4/%E6%9C%88%E5%B1%82%E7%BA%A7%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84%E7%BB%84%E7%BB%87%E5%AD%98%E5%82%A8%EF%BC%8C%E4%BE%BF%E4%BA%8E%E7%AE%A1%E7%90%86%E5%92%8C%E8%BF%BD%E6%BA%AF%E3%80%82
推荐方式:拉取官方可信构建镜像
bashdocker pull kartoza/pg-backup:latest docker pull kartoza/pg-backup:${VERSION} # 例如 VERSION=13.0
重要:强烈建议使用与目标PostgreSQL镜像版本匹配的标签(如使用13.0版本备份kartoza/postgis:13.0数据库)。
latest标签可能会变更,可能导致备份失败。
手动构建镜像
若需自行构建(会消耗更多带宽,需每次拉取依赖包):
bashgit clone https://github.com/kartoza/docker-pg-backup.git cd docker-pg-backup ./build.sh # 构建最新版本
基本运行命令
bashdocker run --name="backups" --hostname="pg-backups" --link db1:db -v backups:/backups -i -d kartoza/pg-backup:13.0
参数说明:
--link db1:db:连接到名为db1的数据库容器(别名db)-v backups:/backups:挂载本地卷backups到容器内/backups目录,用于存储备份文件--name="backups":指定容器名称--hostname="pg-backups":设置容器主机名通过环境变量可自定义数据库连接参数、备份策略等,常用变量如下:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
| POSTGRES_USER | docker | 数据库连接用户名 |
| POSTGRES_PASS | docker | 数据库连接密码 |
| POSTGRES_PORT | 5432 | 数据库端口 |
| POSTGRES_HOST | db | 数据库主机名(通常为链接的数据库容器别名) |
| POSTGRES_DBNAME | gis | 默认数据库名(当未指定DBLIST时使用) |
| ARCHIVE_FILENAME | 空 | 自定义备份文件名格式,为空时使用默认格式 |
| DBLIST | 空 | 空格分隔的数据库列表(如gis postgres),默认备份所有数据库 |
| REMOVE_BEFORE | 空 | 保留最近N天的备份,删除更早的备份(如30保留30天内备份) |
| DUMP_ARGS | -Fc | pg_dump参数,默认生成压缩备份(-Fc为自定义格式) |
| RESTORE_ARGS | -j 4 | pg_restore参数,默认4个并行任务 |
| STORAGE_BACKEND | FILE | 存储后端,可选FILE(本地)或s3(S3兼容存储) |
| DB_TABLES | 空 | 设置为yes时,将数据库中所有表分别导出为独立备份 |
环境变量使用示例
bashdocker run -e POSTGRES_USER=bob -e POSTGRES_PASS=secret -e REMOVE_BEFORE=7 --link db:db -v backups:/backups -d kartoza/pg-backup:13.0
默认命名格式
未指定ARCHIVE_FILENAME时,备份文件路径格式为:
/backups/$(date +%Y)/$(date +%B)/${DUMPPREFIX}_${DB}.$(date +%d-%B-%Y).dmp
示例(DUMPPREFIX=PG,数据库名gis):
/backups/2019/February/PG_gis.13-February-2019.dmp
自定义命名格式
指定ARCHIVE_FILENAME时,将使用固定前缀命名,示例(ARCHIVE_FILENAME=/backups/latest):
/backups/latest.gis.dmp
支持将备份文件存储到S3兼容对象存储,需配置以下环境变量:
| 环境变量 | 说明 |
|---|---|
| ACCESS_KEY_ID | S3访问密钥ID |
| SECRET_ACCESS_KEY | S3密钥 |
| DEFAULT_REGION | 默认区域(默认:us-west-2) |
| HOST_BASE | S3服务地址(如MinIO的地址) |
| HOST_BUCKET | S3桶地址格式 |
| SSL_SECURE | 是否启用SSL(默认:True) |
| EXTRA_CONF | 额外s3cmd配置内容 |
| BUCKET | 目标存储桶名称(默认:backups) |
完整配置示例可参考项目仓库中的
docker-compose-s3.yml文件
恢复准备
使用配套的restore.sh脚本执行恢复操作,需预先设置以下环境变量:
| 环境变量 | 说明 |
|---|---|
| TARGET_DB | 目标数据库名称 |
| WITH_POSTGIS | 是否生成PostGIS扩展(kartoza特定配置) |
| TARGET_ARCHIVE | 备份文件完整路径 |
警告:恢复脚本会删除与
TARGET_DB同名的现有数据库,请谨慎操作。建议恢复到新数据库(如gis_restore),验证后再手动替换原数据库。
恢复命令示例
通过docker-compose执行恢复:
bashdocker-compose exec dbbackup /backup-scripts/restore.sh
yamlversion: '3' services: dbbackup: image: kartoza/pg-backup:13.0 container_name: backups hostname: pg-backups links: - db:db volumes: - backups:/backups environment: - POSTGRES_USER=postgres - POSTGRES_PASS=securepassword - POSTGRES_DBNAME=gis - REMOVE_BEFORE=30 - DUMPPREFIX=prod_backup restart: unless-stopped db: image: kartoza/postgis:13.0 environment: - POSTGRES_USER=postgres - POSTGRES_PASS=securepassword - POSTGRES_DB=gis volumes: - pgdata:/var/lib/postgresql/data volumes: backups: pgdata:
Tim Sutton ()
Admire Nyakudya ()
Rizky Maulana (***)
December 2020
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务