如何为Docker Compose配置dns条目



我正在设置一个Spring应用程序,以便使用compose运行。应用程序需要为开发人员建立到本地运行的ActiveMQ的连接,或者为暂存/生产建立到现有实例的连接。

我设置了以下内容,这对本地开发非常有效:

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

在应用程序配置中,我将AMQ连接声明为

broker-url=tcp://amq:61616

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

现在,我需要将其设置为登台/生产,其中ActiveMQ实例在基础结构中的现有硬件上运行。我的想法是使用spring配置文件来处理不同的配置,在这种情况下,"broker url"的应用程序配置条目=tcp://amq:61616'将变成类似broker-url=tcp://some.host.here:61616的东西,或者找到某种方法在我的生产docker-compose.yml中创建一个dns条目,该条目将把amqdns条目指向相关的暂存或生产队列。

这里最好的方法是什么?如果是DNS,我如何在compose中设置它?

谢谢!

使用extra_hosts标志

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

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

这不会创建DNS记录,而是在容器的/etc/hosts文件中创建一个条目,从而有效地允许您在应用程序中继续使用tcp://amq:61616作为代理URL。

使用大使容器

如果你不满足于直接指定生产代理的IP地址,并且想利用现有的DNS记录,你可以使用大使模式:

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

最新更新