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 计算引擎环境中部署五节点 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
$ 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 容器启动时),或在配置文件/清单中添加(当 Spilo 用于 Docker 编排环境时,如 Kubernetes 或 Docker Compose)。
请点击此处查看环境变量列表。
要通过环境手动提供环境变量进行本地测试:
docker run -it -e YOUR_ENV_VAR=test your-spilo-image:latest
Spilo 欢迎通过问题跟踪器提问。我们也非常感谢修复、功能请求和更新;提交拉取请求(pull request)前,请参阅我们的贡献者指南。
本项目采用 Apache 2.0 许可证。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务