特定于副本的Docker堆栈/组合configuration

我试图运行一个使用Docker堆栈/撰写文件的RabbitMQ集群。 不幸的是,这意味着我不能使用replicasfunction来扩大或缩小容器的数量,我不得不使用多个服务,如下所示:

 version: '3.3' services: rabbit_node_1: image: rabbitmq:3.7.0-management-alpine environment: - RABBITMQ_ERLANG_COOKIE=foo hostname: rabbit_node_1 ports: - "15672:15672" - "5672:5672" networks: - myoverlay tty: true rabbit_node_2: image: rabbitmq:3.7.0-management-alpine environment: - RABBITMQ_ERLANG_COOKIE=foo hostname: rabbit_node_2 depends_on: - rabbit_node_1 ports: - "15673:15672" - "5673:5672" networks: - myoverlay tty: true 

服务之间的唯一区别是hostname ,我正在提供一个自定义configuration文件,如下所示:

 [ { rabbit, [ {cluster_nodes, {['rabbit@rabbit_node_1', 'rabbit@rabbit_node_2'], disc}}, { loopback_users, [ ] } ] } ]. 

有没有办法将这两个单独的Docker服务rabbitmq为一个rabbitmq服务,并以某种方式使用副本数来驱动每个实例中的差异? 像这样(请参阅${replica_ip_address}${replica_number} ):

 version: '3.3' services: rabbitmq: image: rabbitmq:3.7.0-management-alpine environment: - RABBITMQ_ERLANG_COOKIE=foo - REPLICA_IP_ADDRESS=${replica_ip_address} hostname: rabbit_node_${replica_number} ports: - "15672:15672" - "5672:5672" networks: - myoverlay tty: true