apache/eventmeshApache EventMesh 是一款开源的云原生分布式事件驱动架构(EDA)基础设施,旨在为微服务应用提供高效、可靠的跨服务事件通信能力。本 Docker 镜像封装了 Apache EventMesh 运行环境,简化了部署流程,支持快速集成到容器化应用架构中。
主要用途:
微服务解耦
作为事件总线替代同步 RPC,实现服务间异步通信,降低依赖耦合。
实时数据处理
接收日志、监控、用户行为等实时数据流,转发至分析引擎(如 Flink、Spark)。
跨系统集成
连接异构系统(如传统应用与云服务),通过协议转换实现事件互通。
业务流程编排
基于事件链触发多步骤业务流程(如订单创建→库存扣减→物流通知)。
云原生应用部署
在 Kubernetes 集群中作为 DaemonSet/Deployment 部署,提供集群级事件通信能力。
从 Docker Hub 或 Apache 官方仓库拉取镜像:
bash# 格式:docker pull [镜像仓库]/apache-eventmesh:[版本] # 示例(假设官方标签为 1.10.0): docker pull apache/eventmesh:1.10.0
以 HTTP 协议启动,监听 *** 端口:
bashdocker run -d \ --name eventmesh \ -p ***:*** \ apache/eventmesh:1.10.0
通过环境变量配置运行参数(以 Kafka 协议为例):
bashdocker run -d \ --name eventmesh-kafka \ -p 9876:9876 \ # Kafka 协议端口 -e EVENTMESH_PROTOCOL=kafka \ -e EVENTMESH_PORT=9876 \ -e KAFKA_BOOTSTRAP_SERVERS=kafka:9092 \ # 关联 Kafka 服务地址 apache/eventmesh:1.10.0
以下示例集成 Apache EventMesh 与 Kafka,实现事件生产与消费闭环:
yaml# docker-compose.yml version: '3.8' services: # Kafka 服务(事件存储与转发依赖) kafka: image: confluentinc/cp-kafka:7.3.0 container_name: kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 depends_on: - zookeeper zookeeper: image: confluentinc/cp-zookeeper:7.3.0 container_name: zookeeper ports: - "2181:2181" environment: ZOOKEEPER_CLIENT_PORT: 2181 # Apache EventMesh 服务 eventmesh: image: apache/eventmesh:1.10.0 container_name: eventmesh ports: - "9876:9876" # Kafka 协议端口 - "***:***" # HTTP 协议端口(可选) environment: EVENTMESH_PROTOCOL: kafka # 启用 Kafka 协议 EVENTMESH_PORT: 9876 KAFKA_BOOTSTRAP_SERVERS: kafka:9092 # 连接上述 Kafka 服务 EVENTMESH_LOG_LEVEL: INFO # 日志级别 depends_on: - kafka restart: unless-stopped
启动命令:
bashdocker-compose up -d
如需自定义详细配置(如事件路由规则、认证参数),可通过挂载本地配置文件覆盖容器内默认配置:
bashdocker run -d \ --name eventmesh-custom \ -p ***:*** \ -v /本地路径/eventmesh.properties:/opt/eventmesh/conf/eventmesh.properties \ # 主配置文件 -v /本地路径/routes.yaml:/opt/eventmesh/conf/routes.yaml \ # 事件路由规则 apache/eventmesh:1.10.0
事件持久化依赖外部存储(如 Kafka、RocketMQ 或数据库),需通过环境变量或配置文件指定存储地址。示例:
bashdocker run -d \ --name eventmesh-persistent \ -e EVENTMESH_STORAGE_TYPE=kafka \ -e KAFKA_BOOTSTRAP_SERVERS=192.168.1.100:9092 \ # 外部 Kafka 集群地址 -e EVENTMESH_PERSIST_RETRY_TIMES=3 \ # 事件持久化重试次数 apache/eventmesh:1.10.0
| 环境变量名 | 说明 | 默认值 | 可选值 |
|---|---|---|---|
EVENTMESH_PROTOCOL | 启用的通信协议 | http | http, kafka, rocketmq, rabbitmq |
EVENTMESH_PORT | 服务监听端口 | *** | 自定义端口(如 9876、5555) |
EVENTMESH_LOG_LEVEL | 日志级别 | INFO | DEBUG, INFO, WARN, ERROR |
EVENTMESH_STORAGE_TYPE | 事件持久化类型 | memory | memory, kafka, rocketmq |
KAFKA_BOOTSTRAP_SERVERS | Kafka 集群地址(协议为 Kafka 时必填) | - | 如 kafka1:9092,kafka2:9092 |
ROCKETMQ_NAMESRV_ADDR | RocketMQ NameServer 地址 | - | 如 rocketmq:9876 |
EVENTMESH_CLUSTER_MODE | 是否启用集群模式 | false | true, false |
EVENTMESH_MAX_EVENT_SIZE | 单事件最大大小(字节) | *** (1MB) | 自定义数值(如 2097152) |
容器内默认配置文件路径:/opt/eventmesh/conf/,主要文件包括:
eventmesh.properties:主配置(协议、端口、线程池等)routes.yaml:事件路由规则(按主题、标签转发)security.properties:认证授权配置(如 Token、TLS)-p 映射端口至宿主机--net=host)bash# 创建自定义网络 docker network create eventmesh-net # 连接网络启动服务 docker run -d --name eventmesh --net eventmesh-net apache/eventmesh:1.10.0
通过容器名访问同一网络内的依赖服务(如 Docker Compose 示例中的 kafka:9092),无需暴露宿主机端口。
docker logs eventmesh 查看日志,确认端口是否被占用,修改 EVENTMESH_PORT 解决。KAFKA_BOOTSTRAP_SERVERS 等地址是否正确,确保依赖服务(如 Kafka)已启动且网络连通。docker exec -it eventmesh cat /opt/eventmesh/conf/[文件] 检查容器内配置。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务