开发环境中间件部署 (Docker Compose)
本文档提供了一份适用于开发环境的 Docker Compose 配置文件,用于快速部署 Redis, Elasticsearch, Kibana, RocketMQ (含 Dashboard)。
服务列表
- Redis: 6379
- Elasticsearch (ES): 9200 (REST), 9300 (Transport)
- Kibana: 5601 (连接 ES)
- RocketMQ Namesrv: 9876
- RocketMQ Broker: 10911, 10909, 8081, 8085
- RocketMQ Dashboard: 8085 (寄生在 Broker 容器上)
docker-compose.yml
以下是具体的配置文件:
yaml
services:
# --- Redis (不变) ---
redis:
image: redis:latest
container_name: redis
ports:
- "6379:6379"
restart: always
# --- ES + Kibana (不变) ---
elasticsearch:
image: elasticsearch:8.17.0
container_name: elasticsearch
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "xpack.security.enabled=false"
ports:
- "9200:9200"
- "9300:9300"
volumes:
- es_data:/usr/share/elasticsearch/data
kibana:
image: kibana:8.17.0
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- I18N_LOCALE=zh-CN
ports:
- "5601:5601"
depends_on:
- elasticsearch
# --- RocketMQ Namesrv ---
rmqnamesrv:
image: apache/rocketmq:5.4.0
container_name: rmqnamesrv
command: sh mqnamesrv
ports:
- "9876:9876"
# --- RocketMQ Broker (关键) ---
rmqbroker:
image: apache/rocketmq:5.4.0
container_name: rmqbroker
ports:
- "10911:10911"
- "10909:10909"
- "8081:8081"
- "8085:8085" # <--- 把 Dashboard 的端口也在这里映射
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
# 【关键设置】告诉大家我是 127.0.0.1
# 1. Windows 连 127.0.0.1 -> 通!
# 2. Dashboard 连 127.0.0.1 -> 因为和 Broker 在一起,也是通!
command: sh -c 'printf "brokerIP1=127.0.0.1\nautoCreateTopicEnable=true\nautoCreateSubscriptionGroup=true\n" > /home/rocketmq/rocketmq-5.4.0/conf/broker.conf && sh mqbroker -n rmqnamesrv:9876 -c /home/rocketmq/rocketmq-5.4.0/conf/broker.conf --enable-proxy'
depends_on:
- rmqnamesrv
# --- RocketMQ Dashboard (寄生模式) ---
rmqdashboard:
image: apacherocketmq/rocketmq-dashboard:latest
container_name: rmqdashboard
# 【核心魔法】完全不使用自己的网络,直接寄生在 rmqbroker 上
network_mode: "service:rmqbroker"
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dserver.port=8085
# 必须把内部端口改成 8085,防止和 Broker 的 8080/8081 冲突
depends_on:
- rmqbroker
volumes:
es_data: