我正在设置一个使用compose运行的Spring应用程序。应用程序需要与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在本地启动,我的应用程序constiner启动并连接到它。
现在,我需要将其设置为暂存/生产,其中ActiveMQ实例在基础架构中的现有硬件上运行。我的想法是使用spring配置文件来处理不同的配置,在这种情况下,'broker-url = tcp:// amq:61616'的应用程序配置条目将变为broker-url=tcp://some.host.here:61616
或者找到一些方法来创建一个我的生产docker-compose.yml中的dns条目,它将amq
dns条目指向关联的暂存或生产队列。
这里最好的方法是什么?如果是DNS,我该如何在撰写中设置它?
谢谢!
答案 0 :(得分:4)
extra_hosts
标志首先想到的是使用Compose's extra_hosts
标志:
legacy-bridge:
image: myco/myservice
extra_hosts:
- "amq:1.2.3.4"
这不会创建DNS记录,而是容器的/etc/hosts
文件中的条目,有效地允许您继续在应用程序中使用tcp://amq:61616
作为代理URL。
如果您不满足于直接指定生产经纪人的IP地址并希望利用现有的DNS记录,则可以使用ambassador pattern:
amq-ambassador:
image: svendowideit/ambassador
command: ["your-amq-dns-name", "61616"]
ports:
- 61616
legacy-bridge:
image: myco/myservice
links:
- "amq-ambassador:amq"