eeacms/haproxy本镜像是一个通用的HAProxy Docker镜像,可用于非EEA相关项目。基于Debian Bullseye系统,集成HAProxy 2.9版本,默认暴露5000端口,提供高性能的TCP/HTTP负载均衡与反向代理能力。
DNS_ENABLED),适配动态服务发现场景(如Docker Swarm、Kubernetes):latest Dockerfile
| 标签 | HAProxy版本 | 发布版本 | Dockerfile链接 |
|---|---|---|---|
:2.9-1.1 | 2.9.9 | 1.1 | 链接 |
:2.0-1.0 | 2.0.31 | 1.0 | 链接 |
:1.8-1.8 | 1.8.31 | 1.8 | 链接 |
:1.8-1.7 | 1.8.30 | 1.7 | 链接 |
:1.8-1.6 | 1.8.29 | 1.6 | 链接 |
:1.8-1.5 | 1.8.22 | 1.5 | 链接 |
更多历史版本见旧版本列表
以下是使用eeacms/haproxy镜像的基础docker-compose.yml示例:
yamlversion: "2" services: haproxy: image: eeacms/haproxy depends_on: - webapp ports: - "80:5000" # 前端服务端口映射 - "1936:1936" # 统计页面端口映射 environment: BACKENDS: "webapp" # 后端服务名称(与下方webapp服务对应) DNS_ENABLED: "true" # 启用DNS解析后端 LOG_LEVEL: "info" # 日志级别 webapp: image: eeacms/hello # 示例后端服务
服务扩展:可通过docker-compose scale扩展后端实例数量:
bash$ docker-compose up -d --scale webapp=4 # 将webapp扩展至4个实例
验证:
http://localhost,多次刷新可观察后端服务器IP变化(负载均衡效果)http://localhost:1936查看统计页面,默认登录凭据为admin:admin(通过STATS_AUTH配置)注意:由于
DNS_TTL默认值限制,后端服务可能需要最多1分钟完成自动发现。
使用BACKENDS环境变量快速启动容器,直接指定后端服务器列表:
bash# 静态IP后端示例 $ docker run --env BACKENDS="192.168.1.5:80 192.168.1.6:80" eeacms/haproxy # DNS动态解析后端示例(适用于Rancher等动态服务发现场景) $ docker run --link=webapp -e BACKENDS="webapp" -e DNS_ENABLED=true eeacms/haproxy
BACKENDS格式:server_ip:port,多服务器用空格分隔(需用引号包裹)DNS_ENABLED=true:启用DNS解析,当后端存在多个DNS记录时(如容器集群),会负载所有解析结果通过挂载卷加载自定义haproxy.cfg:
bash$ docker run -v /本地路径/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg eeacms/haproxy:latest
配置热重载:修改配置后无需重启容器,可通过以下命令重载:
bash$ docker exec <容器名称> reload # <容器名称>为实际运行的HAProxy容器名
通过Dockerfile扩展基础镜像,内置自定义配置:
dockerfileFROM eeacms/haproxy:latest COPY ./conf.d/haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg # 复制自定义配置 # 可选:添加额外依赖 # RUN apt-get update && apt-get install -y <依赖包>
构建并运行自定义镜像:
bash$ docker build -t my-haproxy:v1 . # 构建镜像 $ docker run my-haproxy:v1 # 运行自定义镜像
| 环境变量 | 默认值 | 描述 |
|---|---|---|
STATS_PORT | 1936 | 统计页面绑定端口 |
STATS_AUTH | admin:admin | 统计页面登录凭据,格式user:password |
FRONTEND_NAME | http-frontend | 前端服务名称 |
FRONTEND_PORT | 5000 | 前端服务绑定端口 |
FRONTEND_MODE | http(或BACKENDS_MODE) | 前端模式(http/tcp) |
PROXY_PROTOCOL_ENABLED | false | 是否启用Proxy Protocol(true/false) |
COOKIES_ENABLED | false | 是否启用基于Cookie的会话保持(true/false) |
COOKIES_NAME | SRV_ID | 会话保持Cookie名称 |
COOKIES_PARAMS | - | Cookie参数,如indirect nocache maxidle 30m(参考HAProxy文档) |
BACKEND_NAME | http-backend | 后端服务名称 |
BACKENDS | - | 后端服务器列表,格式ip:port,空格分隔 |
BACKENDS_PORT | 80 | 后端默认端口(当BACKENDS未指定端口时使用) |
BACKENDS_MODE | http(或FRONTEND_MODE) | 后端模式(http/tcp) |
BALANCE | roundrobin | 负载均衡算法(如roundrobin/leastconn/source) |
SERVICE_NAMES | - | 服务名称前缀(用于自动发现,多前缀用空格分隔) |
LOGGING | 127.0.0.1:514(UDP) | 日志输出地址(格式ip:port) |
LOG_LEVEL | notice | 日志级别:emerg/alert/crit/err/warning/notice/info/debug |
DNS_ENABLED | false | 是否启用DNS解析后端 |
DNS_TTL | 1(分钟) | DNS解析缓存时间(后端自动发现间隔) |
TIMEOUT_CONNECT | 5000(ms) | 后端连接超时时间 |
TIMEOUT_CLIENT | 50000(ms) | 客户端请求超时时间 |
TIMEOUT_SERVER | 50000(ms) | 后端响应超时时间 |
HTTPCHK | meth GET uri / | HTTP健康检查方法与路径(如meth HEAD uri /health) |
HTTPCHK_HOST | localhost | 健康检查请求的Host头 |
INTER | 2s | 健康检查间隔时间 |
FAST_INTER | - | 过渡状态健康检查间隔(未设置则使用INTER) |
DOWN_INTER | - | 后端DOWN状态检查间隔(未设置则使用INTER) |
RISE | 2 | 后端恢复UP状态所需的连续健康检查通过次数 |
FALL | 3 | 后端标记DOWN状态所需的连续健康检查失败次数 |
容器内置rsyslog服务,日志默认输出至容器日志(UDP 127.0.0.1:514),默认日志级别为notice(仅记录重要事件)。
LOG_LEVEL环境变量设置,如LOG_LEVEL=infoLOGGING环境变量指定外部日志服务器,如LOGGING=logs.example.com:5005(需确保目标服务器监听UDP对应端口)本项目由欧洲环境署(EU)资助。

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