Bitnami的PostgreSQL Helm chart,用于在Kubernetes环境中便捷部署和管理PostgreSQL数据库,支持灵活配置与可靠运行。
收藏数: 5
下载次数: 36573349
类型:
bitnamicharts/postgresqlPostgreSQL(简称Postgres)是一款开源对象关系型数据库,以可靠性和数据完整性著称。它符合ACID标准,支持外键、连接、视图、触发器和存储过程。Bitnami PostgreSQL镜像为PostgreSQL提供了预配置、随时可用的容器化部署方案,优化了安全性和易用性,适用于开发、测试和生产环境。
PostgreSQL 官方概述
商标说明:本软件列表由Bitnami打包。所提及的商标分属各自公司所有,使用这些商标不意味着任何关联或背书。
bash# 简单启动(非持久化,仅用于测试) docker run --name postgresql -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 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 \ bitnami/postgresql:latest
yamlversion: '3' services: postgresql: image: 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将升级其公共镜像仓库,通过新的Bitnami Secure Images计划提供精选的加固、安全聚焦镜像。此次变更包括:
这些变更旨在通过推广软件供应链完整性最佳实践和最新部署,提升所有Bitnami用户的安全态势。更多详情参见Bitnami Secure Images公告。
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 \ bitnami/postgresql:latest # 使用Docker命名卷(推荐) docker volume create postgres_data docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgres_data:/bitnami/postgresql \ 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 \ 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" \ 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 \ 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 \ 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
| 参数 | 描述 | 默认值 |
|---|---|---|
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 alpine tar -czf /backup/postgres_backup.tar.gz -C /source . # 启动新版本容器 docker run --name postgresql-new \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgres_data:/bitnami/postgresql \ 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 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。






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