
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
运行pg_dump作为定时任务的Docker镜像。镜像地址:https://hub.docker.com/repository/docker/martlark/pg_dump
martlark/pg_dump是一个专为PostgreSQL数据库设计的备份工具镜像,通过cron任务定时执行pg_dump命令生成数据库备份,并支持自动清理旧备份文件。此外,该镜像还集成了s3cmd工具,可将备份文件同步至AWS S3或其他S3兼容存储服务,适用于需要定期备份PostgreSQL数据并确保数据安全的场景。
| 变量名 | 别名 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
PGUSER | None | 可选 | postgres | 用于访问数据库的用户 |
POSTGRES_PASSWORD | PGPASSWORD | 可选 | None | 用于访问数据库的密码 |
POSTGRES_DB | PGDB | 可选 | postgres | 数据库名称 |
PGHOST | None | 可选 | db/localhost | 数据库主机名。若使用RUN_DOUBLE,默认值为db,否则为localhost |
PGPORT | None | 可选 | 5432 | 数据库端口 |
CRON_SCHEDULE | None | 必需 | 0 1 * * * | pg_dump定时任务的cron表达式(默认每天凌晨1点执行) |
RETAIN_COUNT | None | 可选 | None | 保留备份文件的数量,超过此数量将删除旧文件 |
PREFIX | None | 可选 | dump | 备份文件的前缀 |
PGDUMP | None | 可选 | /dump | 备份文件的存储路径 |
COMMAND | None | 可选 | dump-cron | 执行命令:dump表示执行一次备份后退出,dump-cron表示创建定时任务并运行 |
POSTGRES_PASSWORD_FILE | None | 推荐 | None | 密码文件路径,会覆盖POSTGRES_PASSWORD和PGPASSWORD |
S3_ACCESS_KEY | None | S3同步时必需 | None | S3访问密钥,例如:AKIAIOSFODNN7EXAMPLE |
S3_SECRET_KEY | None | S3同步时必需 | None | S3密钥,例如:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
S3_BUCKET_PATH | None | S3同步时必需 | None | S3存储桶完整路径,例如:s3://my-bucket/db-dumps/ |
S3_HOSTNAME | None | 可选 | s3.amazonaws.com | 非AWS S3服务的主机名,例如:mys3server.local |
S3_HOST_BUCKET | None | 可选 | %(bucket)s.s3.amazonaws.com | 非AWS S3服务的存储桶主机格式,例如:mys3server.local/%(bucket) |
S3_SSL_OPTION | None | 可选 | --ssl | SSL选项:--ssl启用SSL,--no-ssl禁用SSL |
S3_SYNC_OPTION | None | 可选 | --delete-after --delete-removed | S3同步选项,控制文件同步方式 |
/dump文件夹,备份文件将存储于此CRON_SCHEDULE指定备份时间计划Docker Run示例
bashdocker run -d \ --name postgres-backup \ -e POSTGRES_PASSWORD=SumPassw0rdHere \ -e POSTGRES_DB=postgres \ -e PGHOST=database \ -e CRON_SCHEDULE="0 3 * * *" \ -e RETAIN_COUNT=4 \ -v ./persistent/dump:/dump \ --link database:db \ martlark/pg_dump:15.4
推荐与PostgreSQL服务一起部署,作为独立服务运行。
基础配置示例
yamlversion: "3.9" services: database: image: postgres:12.16 volumes: - ./persistent/data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=SumPassw0rdHere - POSTGRES_DB=postgres restart: unless-stopped postgres-backup: image: martlark/pg_dump:12.16 container_name: postgres-backup links: - database:db # 将数据库服务映射为"db" environment: - PGPASSWORD=SumPassw0rdHere - CRON_SCHEDULE=0 3 * * * # 每天凌晨3点执行备份 - RETAIN_COUNT=4 # 保留4个备份文件 volumes: - ./persistent/dump:/dump restart: unless-stopped
带S3同步的配置示例
yamlversion: "3.9" services: backup: image: martlark/pg_dump:15.4 environment: - POSTGRES_PASSWORD=SumPassw0rdHere - POSTGRES_DB=postgres - PGHOST=database # PostgreSQL数据库主机名 - CRON_SCHEDULE=*/15 * * * * # 每15分钟执行一次备份 - RETAIN_COUNT=3 # 保留3个备份文件 - S3_BUCKET_PATH=s3://${S3_BUCKET_NAME}/ - S3_SECRET_KEY=${S3_SECRET_KEY} - S3_ACCESS_KEY=${S3_ACCESS_KEY} volumes: - ./persistent/dump:/dump restart: unless-stopped
基本同步
默认情况下,容器会将/dump目录中的备份文件同步至S3存储桶,并使用以下选项:
--delete-removed:删除存储桶中不存在于本地的文件--delete-after:先上传新文件,再删除旧文件如需保留存储桶中的所有备份文件(不删除),可设置:
yamlenvironment: - S3_SYNC_OPTION="--no-delete-removed"
非AWS S3服务配置
对于非AWS的S3兼容服务,需配置S3_HOSTNAME和S3_HOST_BUCKET:
yamlenvironment: - S3_HOSTNAME=mys3server.local - S3_HOST_BUCKET=mys3server.local/%(bucket)
POSTGRES_PASSWORD_FILE通过Docker Secrets管理密码,而非直接设置环境变量。示例密码文件内容:
textPOSTGRES_PASSWORD=SumPassw0rdHere
postgres用户运行,建议保持非root用户以提高安全性。PGPORT为容器内暴露的端口,建议不要修改默认值5432。镜像通常会提供PostgreSQL最新主要和次要版本的标签,历史版本也会被维护。Docker Hub上可用的版本标签:
11.19 11.21 12.12 12.16 13.12 14.7 14.9 15.2 15.4
latest标签对应版本为15.4。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务