如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Spilo 是一个捆绑了 PostgreSQL 和 Patroni 的 Docker 镜像。Patroni 是 PostgreSQL 高可用(HA)的模板。多个 Spilo 实例可组成一个弹性高可用 PostgreSQL 集群。为此,需使用相同的 etcd 地址和集群名称启动所有参与的 Spilo 实例。
Spilo 名称源自格鲁吉亚语 სპილო [spiːlɒ],意为“大象”。
Spilo 目前仍在发展中:其开发团队正在开发一个 Postgres operator,旨在简化 Kubernetes 环境中可扩展 Postgres 集群的部署及维护任务。Spilo 将作为该 operator 的核心构建块。目前已有一个 Helm chart,可基于 Spilo 和 Patroni 在 Kubernetes+Google Compute Engine 环境中部署五节点 PostgreSQL 高可用集群。(该 Helm chart 部署的是 Spilo Docker 镜像,而非“裸”Patroni。)
[!IMPORTANT] 我们建议用户使用最新标签从源代码自行构建 Docker 镜像,以受益于持续的改进和修复。团队会继续维护项目并解决问题,但不会进行定期发布,也不会发布最新的 Docker 镜像。
Spilo 的设置假定您已正确配置负载均衡器(HAProxy、ELB、Google 负载均衡器),用于将客户端连接定向到主节点。有两种实现方式:A) 若负载均衡器依赖状态码区分健康节点与故障节点(如 ELB),则需将其配置为轮询 API URL;B) 否则,可使用回调脚本动态更改负载均衡器配置。
Spilo 镜像托管于 GitHub 容器仓库(ghcr.io)。镜像会按标签构建并发布为 linux/amd64 和 linux/arm64 架构。PostgreSQL 14 版本的当前可用镜像可在此处查看:https://github.com/zalando/spilo/pkgs/container/spilo-14
$ cd postgres-appliance
$ docker build --tag $YOUR_TAG .
Dockerfile 中定义了一些构建参数,可通过指定 --build-arg 参数修改它们:
--build-arg WITH_PERL=false # 若需在镜像中安装 perl 和 plperl 包,设为 true--build-arg PGVERSION="12"--build-arg PGOLDVERSIONS="9.5 9.6 10 11"--build-arg DEMO=false # 设为 true 可构建仅在 Kubernetes 上运行的最小镜像--build-arg TIMESCALEDB_APACHE_ONLY=true # 设为 false 可构建 TimescaleDB 社区版(Timescale 许可证)--build-arg TIMESCALEDB_TOOLKIT=true # 设为 false 可跳过安装 TimescaleDB 社区版的工具包。仅在 TIMESCALEDB_APACHE_ONLY=false 时有效--build-arg ADDITIONAL_LOCALES= # 要构建到镜像中的额外 UTF-8 区域设置(示例:"de_DE pl_PL fr_FR")$ docker run -it your-spilo-image:$YOUR_TAG
$ docker exec -it $CONTAINER_NAME bash
PostgreSQL 默认配置为监听端口 5432。Spilo 主节点会初始化 PostgreSQL 并创建超级用户和复制用户(默认用户名为 postgres 和 standby)。
您需要配置 Spilo 为应用程序创建数据库和角色。例如:
psql -h myfirstspilo.example.com -p 5432 -U admin -d postgres
为应用程序创建数据库和角色后,您可以像连接其他任何 PostgreSQL 集群一样连接到 Spilo:
psql -h myfirstspilo.example.com -p 5432 -U wow_app -d wow
psql -d "postgresql://myfirstspilo.example.com:5432/wow?user=wow_app"
Spilo 通过环境变量进行配置,环境变量值可通过以下方式提供:在 Spilo 作为 Docker 容器集启动时手动通过环境提供,或在 Docker 编排环境(如 Kubernetes 或 Docker Compose)中通过配置文件或清单添加。
请点击此处查看环境变量列表。
docker run -it -e YOUR_ENV_VAR=test your-spilo-image:latest
Spilo 欢迎通过 issue 跟踪器提问。我们也非常感谢修复、功能请求和更新;提交拉取请求前,请参阅贡献者指南。
本项目采用 Apache 2.0 许可证。
来自真实用户的反馈,见证轩辕镜像的优质服务