1

我有 3 个项目,部署在不同的主机上。每个项目都有自己的 RabbitMQ 容器。但是我需要用这 3 个主机创建集群,使用相同的虚拟主机,但不同的用户/登录对。

我尝试过 Swarm 和覆盖网络,但 swarm 旨在运行单独的容器,而使用 compose 它不起作用。另外,我尝试了 docker-compose bundle,但这并没有按预期工作:(

我认为它会像这样工作

1)在管理器节点上,我创建覆盖网络

2)在每个撰写文件中,我使用覆盖网络扩展 rabbitmq 容器的网络配置。

3)它们按预期工作,我不发布到 Internet rabbitmq 端口。


任何想法,我该怎么做?

4

1 回答 1

1

您的方法是正确的,但Docker Compose 目前不适用于 Swarm 模式。Compose 只是运行docker命令,所以你可以编写你想要的脚本。对于每个项目,您都会有一个这样的脚本:

docker network create -d overlay app1-net
docker service create --network app1-net --name rabbit-app1 rabbitmq:3
docker service create --network app1-net --name app1 your-app-1-image
...

当您在管理器上运行所有三个脚本时,您将拥有三个网络,每个网络将拥有自己的 RabbitMQ 服务(默认只有 1 个容器,--replicas用于运行多个容器)。在网络内,其他服务可以通过 DNS 名称访问消息队列rabbit-appX。您不需要发布任何端口,因此在 Docker 网络之外无法访问 Rabbit。

于 2016-10-06T08:03:43.973 回答