
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
PostgreSQL(简称Postgres)是一款开源对象关系型数据库,以可靠性和数据完整性著称。它符合ACID标准,支持外键、连接、视图、触发器和存储过程。Bitnami PostgreSQL镜像为PostgreSQL提供了预配置、随时可用的容器化部署方案,优化了安全性和易用性,适用于开发、测试和生产环境。
http://www.postgresql.org
商标说明:本软件列表由Bitnami打包。所提及的商标分属各自公司所有,使用这些商标不意味着任何关联或背书。
bash# 简单启动(非持久化,仅用于测试) docker run --name postgresql -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 docker.xuanyuan.run/bitnami/postgresql:latest # 持久化启动(数据保存在宿主机目录) docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRES_USER=myuser \ -e POSTGRES_DB=mydb \ -v /path/on/host:/bitnami/postgresql \ -p 5432:5432 \ docker.xuanyuan.run/bitnami/postgresql:latest
yamlversion: '3' services: postgresql: image: docker.xuanyuan.run/bitnami/postgresql:latest ports: - "5432:5432" environment: - POSTGRES_PASSWORD=mysecretpassword - POSTGRES_USER=myuser - POSTGRES_DB=mydb - POSTGRES_INITDB_ARGS=--encoding=UTF8 volumes: - postgresql_data:/bitnami/postgresql networks: - postgres_network networks: postgres_network: driver: bridge volumes: postgresql_data: driver: local
自2025年8月28日起,Bitnami将升级其公共镜像仓库,通过新的https://news.broadcom.com/app-dev/broadcom-introduces-bitnami-secure-images-for-production-ready-containerized-applications%E6%8F%90%E4%BE%9B%E7%B2%BE%E9%80%89%E7%9A%84%E5%8A%A0%E5%9B%BA%E3%80%81%E5%AE%89%E5%85%A8%E8%81%9A%E7%84%A6%E9%95%9C%E5%83%8F%E3%80%82%E6%AD%A4%E6%AC%A1%E5%8F%98%E6%9B%B4%E5%8C%85%E6%8B%AC%EF%BC%9A
这些变更旨在通过推广软件供应链完整性最佳实践和最新部署,提升所有Bitnami用户的安全态势。更多详情参见https://github.com/bitnami/containers/issues/83267%E3%80%82
基本配置
bashdocker run --name postgresql \ -e POSTGRES_PASSWORD=StrongPassword123 \ # 数据库管理员密码 -e POSTGRES_USER=appuser \ # 应用数据库用户 -e POSTGRES_DB=appdb \ # 应用数据库名称 -e POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256" \ # 初始化参数 -p 5432:5432 \ # 端口映射 -v postgres_data:/bitnami/postgresql \ # 持久化卷 bitnami/postgresql:latest
环境变量说明
| 环境变量 | 描述 | 默认值 |
|---|---|---|
POSTGRES_PASSWORD | postgres管理员密码 | 随机生成 |
POSTGRES_USER | 应用数据库用户名 | postgres |
POSTGRES_DB | 初始数据库名称 | 与POSTGRES_USER相同 |
POSTGRES_INITDB_ARGS | initdb命令额外参数 | "" |
ALLOW_EMPTY_PASSWORD | 是否允许空密码(仅开发环境) | no |
REPLICATION_MODE | 复制模式(master/slave) | "" |
REPLICATION_USER | 复制用户名称 | repl_user |
REPLICATION_PASSWORD | 复制用户密码 | 随机生成 |
PostgreSQL数据默认存储在容器内/bitnami/postgresql路径。为确保数据持久化,需挂载宿主机目录或Docker卷:
bash# 使用宿主机目录 docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /host/path/to/postgres/data:/bitnami/postgresql \ docker.xuanyuan.run/bitnami/postgresql:latest # 使用Docker命名卷(推荐) docker volume create postgres_data docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgres_data:/bitnami/postgresql \ docker.xuanyuan.run/bitnami/postgresql:latest
启动主节点
bashdocker run --name postgresql-master \ -e POSTGRES_PASSWORD=masterpassword \ -e REPLICATION_MODE=master \ -e REPLICATION_USER=repluser \ -e REPLICATION_PASSWORD=replpassword \ -v master_data:/bitnami/postgresql \ --network postgres-net \ docker.xuanyuan.run/bitnami/postgresql:latest
启动从节点
bashdocker run --name postgresql-slave \ -e POSTGRES_PASSWORD=masterpassword \ # 需与主节点相同 -e REPLICATION_MODE=slave \ -e REPLICATION_USER=repluser \ -e REPLICATION_PASSWORD=replpassword \ -e REPLICATION_HOST=postgresql-master \ # 主节点容器名称或IP -e REPLICATION_PORT=5432 \ -v slave_data:/bitnami/postgresql \ --network postgres-net \ bitnami/postgresql:latest
通过环境变量扩展配置
使用POSTGRESQL_EXTRA_FLAGS添加运行时参数:
bashdocker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRESQL_EXTRA_FLAGS="-c max_connections=200 -c shared_buffers=256MB" \ docker.xuanyuan.run/bitnami/postgresql:latest
通过配置文件自定义
挂载自定义postgresql.conf或pg_hba.conf:
bashdocker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /host/path/to/postgresql.conf:/opt/bitnami/postgresql/conf/postgresql.conf \ -v /host/path/to/pg_hba.conf:/opt/bitnami/postgresql/conf/pg_hba.conf \ docker.xuanyuan.run/bitnami/postgresql:latest
启用LDAP认证需配置以下环境变量:
bashdocker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e LDAP_ENABLED=true \ -e LDAP_URI=ldap://ldap-server:389 \ # LDAP服务器URI -e LDAP_BASE=dc=example,dc=org \ # LDAP基础DN -e LDAP_BINDDN=cn=admin,dc=example,dc=org \ # 绑定DN -e LDAP_BINDPW=ldapadminpassword \ # 绑定密码 -e LDAP_SCOPE=sub \ # 搜索范围 bitnami/postgresql:latest
bashopenssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \ -keyout server.key -out server.crt \ -subj "/CN=postgresql.example.com"
bashdocker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e TLS_ENABLED=true \ -v $(pwd)/server.crt:/opt/bitnami/postgresql/certs/server.crt \ -v $(pwd)/server.key:/opt/bitnami/postgresql/certs/server.key \ -e TLS_CERT_FILE=/opt/bitnami/postgresql/certs/server.crt \ -e TLS_KEY_FILE=/opt/bitnami/postgresql/certs/server.key \ docker.xuanyuan.run/bitnami/postgresql:latest
启用Prometheus指标导出器:
bashdocker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e METRICS_ENABLED=true \ # 启用指标 -e METRICS_EXPORTER_USER=exporter \ # 指标用户 -e METRICS_EXPORTER_PASSWORD=exporterpass \# 指标用户密码 -p 5432:5432 -p 9187:9187 \ # 暴露指标端口(9187) bitnami/postgresql:latest
指标可通过http://localhost:9187/metrics访问。
前提条件
安装命令
bashhelm install my-postgres oci://registry-1.docker.io/bitnamicharts/postgresql \ --set auth.postgresPassword=StrongPassword123 \ --set primary.persistence.size=10Gi \ --set metrics.enabled=true
主要Helm参数
| 参数 | 描述 | 默认值 |
|---|---|---|
auth.postgresPassword | postgres管理员密码 | 随机生成 |
auth.username | 应用用户名 | postgres |
primary.persistence.size | 主节点PVC大小 | 8Gi |
readReplicas.replicaCount | 从节点数量 | 1 |
metrics.enabled | 是否启用Prometheus指标 | false |
tls.enabled | 是否启用TLS | false |
bash# 备份数据库 docker exec postgresql pg_dump -U postgres appdb > backup.sql # 恢复数据库 cat backup.sql | docker exec -i postgresql psql -U postgres -d appdb
使用Velero工具备份PV数据:
bash# 备份PostgreSQL命名空间 velero backup create postgres-backup --include-namespaces postgres # 恢复到目标集群 velero restore create --from-backup postgres-backup
| 特性 | Bitnami镜像 | Docker官方镜像 |
|---|---|---|
| 用户权限 | 默认非root用户运行 | root用户运行 |
| 复制支持 | 内置主从复制配置 | 需手动配置 |
| 安全加固 | 符合容器安全最佳实践(非root、最小权限) | 基础配置,需手动加固 |
| OpenShift兼容性 | 支持(自动调整权限) | 需额外配置 |
| 配置灵活性 | 丰富的环境变量和配置选项 | 基础环境变量支持 |
bash# 停止旧容器 docker stop postgresql # 备份数据(关键步骤) docker run --rm -v postgres_data:/source -v $(pwd):/backup docker.xuanyuan.run/alpine tar -czf /backup/postgres_backup.tar.gz -C /source . # 启动新版本容器 docker run --name postgresql-new \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgres_data:/bitnami/postgresql \ docker.xuanyuan.run/bitnami/postgresql:16 # 指定新版本标签 # 验证后重命名 docker rm postgresql && docker rename postgresql-new postgresql
pg_upgrade工具bitnami/postgresqlBitnami镜像默认使用非root用户(UID 1001),挂载宿主机目录时需确保权限正确:
bashchown -R 1001:1001 /host/path/to/postgres/data
生产环境建议:
ALLOW_EMPTY_PASSWORD=noTLS_ENABLED=trueOpenShift 4.11+:
bashhelm install my-postgres oci://registry-1.docker.io/bitnamicharts/postgresql \ --set primary.podSecurityContext.fsGroup=null \ --set primary.containerSecurityContext.runAsUser=null \ --set volumePermissions.enabled=false
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 bitnamicharts/postgresql 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: