如何为Docker Composeconfigurationdns条目

我正在设置一个Spring应用程序来运行使用撰写。 应用程序需要build立到ActiveMQ的连接,或者为开发人员本地运行,或者为现有的分段/生产实例运行。

我设置了以下对于本地开发非常有用的工具:

amq: image: rmohr/activemq:latest ports: - "61616:61616" - "8161:8161" legacy-bridge: image: myco/myservice links: - amq 

并在应用程序configuration中声明AMQ连接为

 broker-url=tcp://amq:61616 

运行docker-compose up工作得很好,activeMQ在本地启动,我的应用程序强制启动并连接到它。

现在,我需要将其设置为分段/生产,其中ActiveMQ实例正在基础架构中的现有硬件上运行。 我的想法是要么使用弹簧configuration文件来处理不同的configuration,在这种情况下,'broker-url = tcp:// amq:61616'的应用程序configuration条目会变成类似broker-url=tcp://some.host.here:61616或find一些方法来在我的生产docker-compose.yml中创build一个dns条目,它将指向一个amq dns条目到相关的分段或生产队列。

这里最好的办法是什么,如果是DNS,我该如何设置?

谢谢!

使用extra_hosts标志

首先想到的是使用Compose的extra_hosts标志:

 legacy-bridge: image: myco/myservice extra_hosts: - "amq:1.2.3.4" 

这不会创buildDNSlogging,而是创build容器的/etc/hosts文件中的条目,从而使您可以继续在应用程序中使用tcp://amq:61616作为代理url。

使用大使容器

如果您不满意直接指定生产经纪人的IP地址,并希望利用现有的DNSlogging,则可以使用大使模式 :

 amq-ambassador: image: svendowideit/ambassador command: ["your-amq-dns-name", "61616"] ports: - 61616 legacy-bridge: image: myco/myservice links: - "amq-ambassador:amq"