本文档介绍如何使用 Docker 部署 Rabbit 消息服务。
- Docker 20.10+
- 已构建的 Rabbit 镜像(参考主 README 中的镜像构建部分)
docker build -t rabbit-local:latest .在运行容器之前,需要准备配置文件。你可以:
方式一:使用默认配置
- 容器会使用内置的默认配置
方式二:挂载配置文件目录
- 创建本地配置文件目录:
mkdir -p ./config ./datasource - 生成配置文件:
rabbit config -p ./config -N server.yaml - 编辑配置文件以满足你的需求
docker run -d \
--name rabbit \
-p 8080:8080 \
-p 9090:9090 \
--restart=always \
rabbit-local:latest run alldocker run -d \
--name rabbit \
-p 8080:8080 \
-p 9090:9090 \
-v $(pwd)/config:/moon/config \
-v $(pwd)/datasource:/moon/datasource \
--restart=always \
rabbit-local:latest run all -c /moon/config/server.yamldocker run -d \
--name rabbit \
-p 8080:8080 \
-p 9090:9090 \
-e MOON_RABBIT_ENVIRONMENT=PROD \
-e MOON_RABBIT_HTTP_ADDRESS=0.0.0.0:8080 \
-e MOON_RABBIT_GRPC_ADDRESS=0.0.0.0:9090 \
-e MOON_RABBIT_USE_DATABASE=true \
-e MOON_RABBIT_MAIN_HOST=mysql \
-e MOON_RABBIT_MAIN_DATABASE=rabbit \
-e MOON_RABBIT_MAIN_USERNAME=root \
-e MOON_RABBIT_MAIN_PASSWORD=your_password \
--restart=always \
rabbit-local:latest run all8080:8080- HTTP API 端口9090:9090- gRPC 端口
./config:/moon/config- 配置文件目录(可选)./datasource:/moon/datasource- 数据源文件目录(文件存储模式时使用)
所有配置都可以通过环境变量设置,环境变量遵循 MOON_RABBIT_* 模式。常用环境变量:
| 变量 | 说明 | 默认值 |
|---|---|---|
MOON_RABBIT_ENVIRONMENT |
环境:DEV, TEST, PREVIEW, PROD | PROD |
MOON_RABBIT_HTTP_ADDRESS |
HTTP 服务器地址 | 0.0.0.0:8080 |
MOON_RABBIT_GRPC_ADDRESS |
gRPC 服务器地址 | 0.0.0.0:9090 |
MOON_RABBIT_USE_DATABASE |
启用数据库存储模式 | false |
MOON_RABBIT_MAIN_HOST |
MySQL 主机地址 | localhost |
MOON_RABBIT_MAIN_DATABASE |
数据库名称 | rabbit |
MOON_RABBIT_MAIN_USERNAME |
MySQL 用户名 | root |
MOON_RABBIT_MAIN_PASSWORD |
MySQL 密码 | 123456 |
更多环境变量请参考主 README 文档。
docker run -d \
--name rabbit \
-p 8080:8080 \
-p 9090:9090 \
-v $(pwd)/datasource:/moon/datasource \
--restart=always \
rabbit-local:latest run all \
--datasource-paths /moon/datasourcedocker run -d \
--name rabbit \
-p 8080:8080 \
-p 9090:9090 \
--restart=always \
rabbit-local:latest run all \
--use-database true \
--main-host mysql \
--main-database rabbit \
--main-username root \
--main-password your_passworddocker logs rabbit
docker logs -f rabbit # 实时查看日志docker stop rabbitdocker start rabbitdocker restart rabbitdocker stop rabbit
docker rm rabbitdocker exec -it rabbit shdocker ps | grep rabbit
docker inspect rabbit容器内置了健康检查,可以通过以下命令查看:
docker inspect --format='{{.State.Health.Status}}' rabbitdocker logs rabbitnetstat -tuln | grep -E '8080|9090'
# 或
lsof -i :8080
lsof -i :9090docker exec rabbit cat /moon/config/server.yaml# 测试 HTTP 服务
curl http://localhost:8080/health
# 测试版本信息
docker exec rabbit /usr/local/bin/rabbit version- 使用数据库存储模式:生产环境建议使用数据库存储模式而非文件存储模式
- 配置持久化:确保配置文件和数据库连接信息正确配置
- 资源限制:为容器设置适当的资源限制
- 日志管理:配置日志收集和监控
- 安全配置:修改默认的 JWT 密钥和认证密码
- 网络隔离:使用 Docker 网络进行服务隔离
docker run -d \
--name rabbit \
--memory="512m" \
--cpus="1.0" \
-p 8080:8080 \
-p 9090:9090 \
--restart=always \
rabbit-local:latest run all如果 Rabbit 需要连接到独立的 MySQL 容器:
# 创建网络
docker network create rabbit_network
# 运行 MySQL
docker run -d \
--name mysql \
--network rabbit_network \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=rabbit \
mysql:8.0
# 运行 Rabbit
docker run -d \
--name rabbit \
--network rabbit_network \
-p 8080:8080 \
-p 9090:9090 \
-e MOON_RABBIT_USE_DATABASE=true \
-e MOON_RABBIT_MAIN_HOST=mysql \
-e MOON_RABBIT_MAIN_DATABASE=rabbit \
-e MOON_RABBIT_MAIN_USERNAME=root \
-e MOON_RABBIT_MAIN_PASSWORD=your_password \
--restart=always \
rabbit-local:latest run all- 完整的环境变量列表请参考主 README 文档
- 配置文件格式请参考
config/server.yaml - 命令行参数请使用
docker exec rabbit /usr/local/bin/rabbit --help查看