如何为Docker Compose配置dns条目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为Docker Compose配置dns条目相关的知识,希望对你有一定的参考价值。

我正在设置一个使用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或者找到某种方式在我的内部创建一个dns条目生产docker-compose.yml,它将amq dns条目指向关联的登台或生产队列。

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

谢谢!

答案

Using the extra_hosts flag

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

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

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

Using an ambassador container

如果您不满足于直接指定生产代理的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"

以上是关于如何为Docker Compose配置dns条目的主要内容,如果未能解决你的问题,请参考以下文章

如何为 MongoDB 和 Spring Boot 定义主机名到 docker-compose.yml

如何为开发环境配置 vhosts/apache 子域?

如何为 Elastic Beanstalk DOCKER 环境设置永久 DNS 名称?

docker-compose up 容器开始排序

如何为SUSE配置IP地址,网关和DNS

如何为SUSE配置IP地址,网关和DNS