
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该Docker镜像可基于Docker容器标签或YAML文件动态生成haproxy.cfg,实现HAProxy的自动化配置。
适用于需要快速部署和动态管理HAProxy的场景,尤其适合Docker或Swarm环境中多容器服务的负载均衡配置,也支持静态YAML配置的使用场景。
Easy HAProxy会根据容器标签或提供的YAML文件自动创建haproxy.cfg。基本运行命令如下:
bashdocker run -d \ --name easy-haproxy-container \ -v /var/run/docker.sock:/var/run/docker.sock \ -e DISCOVER="swarm|docker|static" \ # + 环境变量 \ # + 映射到主机的端口 \ byjg/easy-haproxy
说明:
/var/run/docker.sock以发现Docker容器并获取标签;| 环境变量 | 描述 |
|---|---|
| DISCOVER | haproxy.cfg的生成方式:static(静态YAML)、docker(Docker标签)或swarm(Swarm标签) |
| HAPROXY_USERNAME | (可选)统计页面用户名,默认:admin |
| HAPROXY_PASSWORD | 统计页面密码,未设置则禁用统计功能 |
| HAPROXY_STATS_PORT | (可选)统计页面端口,默认:1936 |
| HAPROXY_CUSTOMERRORS | (可选)是否使用自定义HTML错误页面,true/false,默认:false |
1. docker模式
适用于常规Docker环境,通过容器标签自动发现并配置HAProxy。要求Easy HAProxy与目标容器处于同一Docker网络,配置每1分钟自动更新。
网络创建示例:
bashdocker create network easyhaproxy docker run --network easyhaproxy docker.xuanyuan.run/byjg/easy-haproxy docker run --network easyhaproxy docker.xuanyuan.run/myimage # 目标容器需加入同一网络
2. swarm模式
适用于Docker Swarm集群,通过服务部署标签(deploy层级)自动发现配置,配置每1分钟自动更新。要求Easy HAProxy与目标服务处于同一网络。
Stack部署标签示例:
yamlservices: foo: deploy: labels: com.byjg.easyhaproxy.definitions: "http,https" # 其他标签参数...
容器/服务标签说明
| 标签格式 | 描述 |
|---|---|
| com.byjg.easyhaproxy.definitions | 逗号分隔的配置定义列表,每个定义需对应以下参数标签 |
| com.byjg.easyhaproxy.port.[definition] | (可选)HAProxy监听端口,默认:80 |
| com.byjg.easyhaproxy.localport.[definition] | (可选)容器监听端口,默认:80 |
| com.byjg.easyhaproxy.host.[definition] | HAProxy监听的主机名 |
| com.byjg.easyhaproxy.redirect.[definition] | (可选)基于上述端口的主机重定向规则 |
| com.byjg.easyhaproxy.sslcert.[definition] | (可选)Base64编码的PEM格式SSL证书 |
单一定义示例:
bashdocker run \ -l com.byjg.easyhaproxy.definitions=http \ -l com.byjg.easyhaproxy.port.http=80 \ -l com.byjg.easyhaproxy.host.http=byjg.com.br \ docker.xuanyuan.run/myimage
多定义示例:
bashdocker run \ -l com.byjg.easyhaproxy.definitions=express,admin \ # express定义 -l com.byjg.easyhaproxy.port.express=80 \ -l com.byjg.easyhaproxy.localport.express=3000 \ -l com.byjg.easyhaproxy.host.express=express.byjg.com.br \ # admin定义 -l com.byjg.easyhaproxy.port.admin=80 \ -l com.byjg.easyhaproxy.localport.admin=3001 \ -l com.byjg.easyhaproxy.host.admin=admin.byjg.com.br \ myimage
重定向示例:
bashdocker run \ -l com.byjg.easyhaproxy.redirect.http=www.byjg.com.br--http://byjg.com.br,byjg.com--http://byjg.com.br \ docker.xuanyuan.run/myimage
3. static模式
通过YAML文件静态配置HAProxy,需将YAML文件挂载至容器内/etc/haproxy/easyconfig.yml。
YAML配置示例:
yamlstats: username: admin password: password port: 1936 # 可选,默认1936 customerrors: true # 可选,默认false easymapping: - port: 80 hosts: host1.com.br: container:5000 host2.com.br: other:3000 redirect: www.host1.com.br: http://host1.com.br - port: 443 ssl_cert: BASE64_PEM_CERTIFICATE # Base64编码的PEM证书 hosts: host1.com.br: container:80 - port: 8080 hosts: host3.com.br: domain:8181
运行命令:
bashdocker run -v /path/to/easyconfig.yml:/etc/haproxy/easyconfig.yml docker.xuanyuan.run/byjg/easy-haproxy
将包含HAProxy配置文件(.cfg)的目录挂载至/etc/haproxy/conf.d,文件内容将被合并到最终的haproxy.cfg中。
bashdocker run \ -v /your/local/conf.d:/etc/haproxy/conf.d \ docker.xuanyuan.run/byjg/easy-haproxy
创建PEM文件:合并证书和私钥为单个PEM文件
bashcat example.com.crt example.com.key > single.pem
转换为Base64编码(单行):
bashcat single.pem | base64 -w0
配置标签:将Base64字符串设置为com.byjg.easyhaproxy.sslcert.[definition]标签的值
启用HAPROXY_CUSTOMERRORS=true后,挂载目录/etc/haproxy/errors-custom/至容器,放入命名为ERROR_NUMBER.http的文件(如503.http),其中ERROR_NUMBER为HTTP错误码。
bashdocker build -t byjg/easy-haproxy .
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务