
dunglas/mercureMercure 是一个开源的实时通信解决方案,旨在提供快速、可靠且电池高效的服务器发送实时更新(Server-Sent Events, SSE)能力。作为 WebSocket API 及相关高级库/服务的现代替代品,Mercure 基于 HTTP 和 SSE 协议构建,原生支持现代 Web 浏览器、移动应用及 IoT 设备。其核心用途是为 REST 和 GraphQL API 添加流式和异步通信能力,实现服务器到客户端的实时数据推送。
官方 Docker 镜像 dunglas/mercure 提供了 Mercure 协议参考实现(hub,即服务器)的容器化部署方式,支持生产环境使用,同时提供免费(开源)版本及托管服务选项。
EventSource API)、移动应用及 IoT 设备。docker run 启动以下命令启动 Mercure hub,监听本地 8080 端口(开发环境配置,生产环境需强化安全设置):
bashdocker run -d \ -p 8080:8080 \ -e MERCURE_PUBLISHER_JWT_KEY='your-publisher-secret' \ -e MERCURE_SUBSCRIBER_JWT_KEY='your-subscriber-secret' \ -e MERCURE_EXTRA_DIRECTIVES='cors_origins *' \ -e MERCURE_ALLOW_ANONYMOUS=1 \ dunglas/mercure
docker-compose 部署创建 docker-compose.yml 文件,配置持久化、网络及环境变量:
yamlversion: '3.8' services: mercure: image: dunglas/mercure ports: - "8080:8080" # HTTP 端口(生产环境建议替换为 443 并启用 HTTPS) environment: - MERCURE_LISTEN_ADDR=:8080 - MERCURE_PUBLISHER_JWT_KEY=your-secure-publisher-key # 生产环境使用强密钥 - MERCURE_SUBSCRIBER_JWT_KEY=your-secure-subscriber-key - MERCURE_CORS_ORIGINS=[***] # 限制允许的前端域名 - MERCURE_ALLOW_ANONYMOUS=0 # 禁用***订阅 - MERCURE_DEBUG=0 # 禁用调试模式 volumes: # 挂载 SSL 证书(生产环境启用 HTTPS 时需配置) # - ./certs:/etc/mercure/certs restart: unless-stopped
启动服务:
bashdocker-compose up -d
Mercure 镜像通过环境变量进行配置,以下为常用核心配置项(完整列表请参考 官方文档):
| 环境变量 | 描述 | 默认值 |
|---|---|---|
MERCURE_LISTEN_ADDR | 服务监听地址和端口(如 :8080 表示所有接口的 8080 端口) | :80 |
MERCURE_PUBLISHER_JWT_KEY | 用于验证发布者 JWT 的密钥(HMAC 密钥或 RSA/EC 公钥) | 无(必填) |
MERCURE_SUBSCRIBER_JWT_KEY | 用于验证订阅者 JWT 的密钥(可与发布者密钥相同) | 无(必填) |
MERCURE_CORS_ORIGINS | 允许的跨域请求源(逗号分隔,* 表示允许所有,生产环境建议指定具体域名) | * |
MERCURE_ALLOW_ANONYMOUS | 是否允许***订阅(0 禁用,1 启用,生产环境建议禁用) | 0 |
MERCURE_EXTRA_DIRECTIVES | 额外的 Nginx 配置指令(如自定义 CORS、缓存策略) | 无 |
MERCURE_DEBUG | 是否启用调试模式(1 启用,0 禁用,生产环境建议禁用) | 0 |
MERCURE_PUBLISHER_JWT_KEY 和 MERCURE_SUBSCRIBER_JWT_KEY),推荐使用 RSA/EC 密钥对而非 HMAC 密钥。MERCURE_LISTEN_ADDR=:443 启用 HTTPS,避免 SSE 连接被拦截。MERCURE_CORS_ORIGINS 应指定具体前端域名,而非使用 *,增强安全性。Mercure 参考实现(hub)采用 AGPLv3 许可协议,详细条款见 官方许可文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务