如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Pgpool-II 是 PostgreSQL 的代理服务,位于 PostgreSQL 服务器与客户端之间,提供连接池、负载均衡、自动故障转移和复制管理功能。
Bitnami Pgpool-II 镜像是经过安全加固的容器化版本,基于 Bitnami Secure Images initiative,适用于开发和生产环境,提供最小化***面、CVE 透明度(通过 VEX/KEV)、SBOM 清单和企业级支持选项。
自 2025 年 8 月 28 日起,Bitnami 将调整公共镜像目录策略:
docker.io/bitnami 迁移至 docker.io/bitnamilegacy 仓库,且不再接收更新详情参见 https://github.com/bitnami/containers/issues/83267%E3%80%82
bashdocker pull bitnami/pgpool:latest
查看 https://hub.docker.com/r/bitnami/pgpool/tags/ 获取可用版本,格式为:
bashdocker pull bitnami/pgpool:[TAG]
bashgit clone https://github.com/bitnami/containers.git cd containers/bitnami/pgpool/[VERSION]/[DISTRO] docker build -t bitnami/pgpool:latest .
bashdocker run --name pgpool bitnami/pgpool:latest
默认凭据和配置选项见 环境变量 部分。
步骤 1:创建网络
bashdocker network create my-network --driver bridge
步骤 2:启动 PostgreSQL 后端节点(使用 repmgr 实现复制)
bash# 主节点 pg-0 docker run --detach --name pg-0 \ --network my-network \ --env REPMGR_PARTNER_NODES=pg-0,pg-1 \ --env REPMGR_NODE_NAME=pg-0 \ --env REPMGR_NODE_NETWORK_NAME=pg-0 \ --env REPMGR_PRIMARY_HOST=pg-0 \ --env REPMGR_PASSWORD=repmgrpass \ --env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \ --env POSTGRESQL_USERNAME=customuser \ --env POSTGRESQL_PASSWORD=custompassword \ --env POSTGRESQL_DATABASE=customdatabase \ bitnami/postgresql-repmgr:latest # 备节点 pg-1 docker run --detach --name pg-1 \ --network my-network \ --env REPMGR_PARTNER_NODES=pg-0,pg-1 \ --env REPMGR_NODE_NAME=pg-1 \ --env REPMGR_NODE_NETWORK_NAME=pg-1 \ --env REPMGR_PRIMARY_HOST=pg-0 \ --env REPMGR_PASSWORD=repmgrpass \ --env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \ --env POSTGRESQL_USERNAME=customuser \ --env POSTGRESQL_PASSWORD=custompassword \ --env POSTGRESQL_DATABASE=customdatabase \ bitnami/postgresql-repmgr:latest
步骤 3:启动 Pgpool-II 代理
bashdocker run --detach --name pgpool \ --network my-network \ -p 5432:5432 \ --env PGPOOL_BACKEND_NODES=0:pg-0:5432,1:pg-1:5432 \ --env PGPOOL_SR_CHECK_USER=customuser \ --env PGPOOL_SR_CHECK_PASSWORD=custompassword \ --env PGPOOL_ENABLE_LDAP=no \ --env PGPOOL_POSTGRES_USERNAME=postgres \ --env PGPOOL_POSTGRES_PASSWORD=adminpassword \ --env PGPOOL_ADMIN_USERNAME=admin \ --env PGPOOL_ADMIN_PASSWORD=adminpassword \ bitnami/pgpool:latest
步骤 4:验证连接
bashdocker run -it --rm \ --network my-network \ bitnami/postgresql:latest \ psql -h pgpool -U customuser -d customdatabase
创建 docker-compose.yml 文件:
yamlversion: '2' networks: my-network: driver: bridge services: pg-0: image: bitnami/postgresql-repmgr:latest volumes: - pg_0_data:/bitnami/postgresql environment: - POSTGRESQL_POSTGRES_PASSWORD=adminpassword - POSTGRESQL_USERNAME=customuser - POSTGRESQL_PASSWORD=custompassword - POSTGRESQL_DATABASE=customdatabase - REPMGR_PASSWORD=repmgrpassword - REPMGR_PRIMARY_HOST=pg-0 - REPMGR_PARTNER_NODES=pg-0,pg-1 - REPMGR_NODE_NAME=pg-0 - REPMGR_NODE_NETWORK_NAME=pg-0 pg-1: image: bitnami/postgresql-repmgr:latest volumes: - pg_1_data:/bitnami/postgresql environment: - POSTGRESQL_POSTGRES_PASSWORD=adminpassword - POSTGRESQL_USERNAME=customuser - POSTGRESQL_PASSWORD=custompassword - POSTGRESQL_DATABASE=customdatabase - REPMGR_PASSWORD=repmgrpassword - REPMGR_PRIMARY_HOST=pg-0 - REPMGR_PARTNER_NODES=pg-0,pg-1 - REPMGR_NODE_NAME=pg-1 - REPMGR_NODE_NETWORK_NAME=pg-1 pgpool: image: bitnami/pgpool:latest ports: - 5432:5432 environment: - PGPOOL_BACKEND_NODES=0:pg-0:5432,1:pg-1:5432 - PGPOOL_SR_CHECK_USER=customuser - PGPOOL_SR_CHECK_PASSWORD=custompassword - PGPOOL_ENABLE_LDAP=no - PGPOOL_POSTGRES_USERNAME=postgres - PGPOOL_POSTGRES_PASSWORD=adminpassword - PGPOOL_ADMIN_USERNAME=admin - PGPOOL_ADMIN_PASSWORD=adminpassword healthcheck: test: ["CMD", "/opt/bitnami/scripts/pgpool/healthcheck.sh"] interval: 10s timeout: 5s retries: 5 volumes: pg_0_data: driver: local pg_1_data: driver: local
启动集群:
bashdocker-compose up -d
容器启动时会自动执行 /docker-entrypoint-initdb.d 目录下所有 .sh 脚本。通过挂载卷添加自定义脚本:
yaml# docker-compose.yml 示例片段 services: pgpool: image: bitnami/pgpool:latest volumes: - /path/to/init-scripts:/docker-entrypoint-initdb.d # 本地脚本目录挂载
通过环境变量配置 TLS:
PGPOOL_ENABLE_TLS=yes:启用 TLSPGPOOL_TLS_CERT_FILE:证书文件路径PGPOOL_TLS_KEY_FILE:私钥文件路径PGPOOL_TLS_CA_FILE(可选):CA 证书路径(用于客户端认证)示例 docker run 命令:
bashdocker run \ -v /path/to/certs:/opt/bitnami/pgpool/certs \ -e PGPOOL_ENABLE_TLS=yes \ -e PGPOOL_TLS_CERT_FILE=/opt/bitnami/pgpool/certs/postgres.crt \ -e PGPOOL_TLS_KEY_FILE=/opt/bitnami/pgpool/certs/postgres.key \ bitnami/pgpool:latest
通过环境变量指定自定义配置文件覆盖默认配置:
PGPOOL_USER_CONF_FILE:自定义主配置文件路径(追加到默认配置)PGPOOL_USER_HBA_FILE:自定义 host-based 认证配置文件路径(覆盖默认 HBA 配置)示例:
yaml# docker-compose.yml 示例片段 services: pgpool: environment: - PGPOOL_USER_CONF_FILE=/config/myconf.conf - PGPOOL_USER_HBA_FILE=/config/myhbaconf.conf volumes: - /path/to/myconf.conf:/config/myconf.conf - /path/to/myhbaconf.conf:/config/myhbaconf.conf
当后端节点恢复后,需手动重新附加到 Pgpool:
docker exec -it pgpool bashPGPASSWORD=$PGPOOL_ADMIN_PASSWORD pcp_connect -h localhost -U $PGPOOL_ADMIN_USERNAMEshow pool_nodes;(获取节点 ID)pcp_attach_node -h localhost -U $PGPOOL_ADMIN_USERNAME <node_id>| 环境变量名称 | 描述 | 默认值 |
|---|---|---|
PGPOOL_PORT_NUMBER | Pgpool 服务端口 | 5432 |
PGPOOL_BACKEND_NODES | 后端 PostgreSQL 节点列表,格式:id:hostname:port[,id:hostname:port] | - |
PGPOOL_SR_CHECK_USER | 流复制检查用户 | - |
PGPOOL_SR_CHECK_PASSWORD | 流复制检查用户密码 | - |
PGPOOL_ADMIN_USERNAME | PCP 管理接口用户名 | admin |
PGPOOL_ADMIN_PASSWORD | PCP 管理接口密码 | - |
PGPOOL_ENABLE_LOAD_BALANCING | 是否启用负载均衡 | yes |
PGPOOL_MAX_POOL | 最大连接池数量 | 15 |
| 环境变量名称 | 描述 | 默认值 |
|---|---|---|
PGPOOL_ENABLE_TLS | 是否启用 TLS 加密 | no |
PGPOOL_HEALTH_CHECK_PERIOD | 健康检查周期(秒) | 30 |
PGPOOL_HEALTH_CHECK_TIMEOUT | 健康检查超时(秒) | 10 |
PGPOOL_CONNECT_TIMEOUT | 连接超时(毫秒) | 10000 |
PGPOOL_DISABLE_LOAD_BALANCE_ON_WRITE | 写操作时是否禁用负载均衡 | transaction |
注意:完整环境变量列表请参见 https://github.com/bitnami/containers/blob/main/bitnami/pgpool/README.md%E3%80%82
推荐使用 Bitnami Helm Chart 部署到 Kubernetes,详情参见 https://github.com/bitnami/charts/tree/master/bitnami/postgresql-ha%E3%80%82
pg_0_data 卷)docker.io/bitnamilegacy 仓库,建议定期更新 latest 标签或迁移至 Secure Images以下是 bitnami/pgpool 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务