xalt/postgres该Docker镜像专注于容器启动阶段的配置管理与备份恢复控制。在容器启动时,它会处理时区设置、基于环境变量的远程备份恢复,并通过特定文件控制恢复行为,确保容器启动流程中的数据初始化与环境配置自动化。
TIMEZONE环境变量设置容器时区,默认值为falseTIMEZONE变量被设置时,容器会自动更新/etc/localtime以应用指定时区DONTSYNC的文件后,容器将永不执行备份恢复操作BACKUP_HOST变量已设置且POSTGRES_HOME目录为空时,才会尝试从远程服务器恢复备份BACKUP_USER(远程服务器登录用户)、BACKUP_PATH(远程备份文件路径)和BACKUP_KEY_FILE(SSH密钥文件路径)三个环境变量使用适用于需要在容器启动阶段自动完成环境配置(如时区)和数据初始化(如数据库备份恢复)的场景,尤其适合对数据一致性有要求的状态ful应用(如数据库服务)。
| 环境变量 | 说明 | 必要性 |
|---|---|---|
TIMEZONE | 容器时区设置,设置后更新/etc/localtime | 可选(默认false) |
BACKUP_HOST | 远程备份服务器地址,用于指定备份源 | 备份恢复时必填 |
BACKUP_USER | 远程备份服务器的登录用户 | 备份恢复时必填 |
BACKUP_PATH | 远程备份服务器上的备份文件路径 | 备份恢复时必填 |
BACKUP_KEY_FILE | 用于SSH连接远程服务器的密钥文件路径 | 备份恢复时必填 |
POSTGRES_HOME | 备份恢复的目标目录,数据应挂载到此路径 | 必须指定(恢复目标路径) |
在容器内任意位置创建DONTSYNC文件(无内容要求),即可禁用备份恢复功能。示例创建命令:
bashtouch /path/to/DONTSYNC
yamlversion: '3' services: app: image: [镜像名称] environment: - TIMEZONE=Asia/Shanghai - BACKUP_HOST=192.168.123.123 # 远程备份服务器IP/域名 - BACKUP_USER=root # 远程服务器登录用户 - BACKUP_PATH=/backup/postgres1 # 远程备份文件路径 - BACKUP_KEY_FILE=/tmp/id_rsa # SSH密钥文件路径(容器内路径) - POSTGRES_HOME=/var/lib/postgresql/data # 备份恢复目标目录 volumes: - ./ssh_key:/tmp/id_rsa:ro # 挂载本地SSH密钥到容器内 - postgres_data:/var/lib/postgresql/data volumes: postgres_data:
TIMEZONE变量,如需设置则更新时区DONTSYNC文件,存在则跳过备份恢复流程DONTSYNC文件不存在且BACKUP_HOST已设置:
POSTGRES_HOME目录是否为空,非空则不执行恢复BACKUP_USER、BACKUP_KEY_FILE通过SSH连接BACKUP_HOST,从BACKUP_PATH恢复备份到POSTGRES_HOMEBACKUP_HOST未设置或备份恢复流程完成,容器继续执行镜像默认的entrypoint注意:
POSTGRES_HOME目录需通过卷挂载或持久化存储,确保恢复的数据可持久化;BACKUP_KEY_FILE需保证容器内路径可访问且权限正确(通常设置为600)。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务