Docker-服务的别名DNS条目(CNAME)

时间:2018-12-06 00:41:59

标签: docker networking dns docker-swarm dnsmasq

问题设置:

  • 列表项
  • Docker Swarm
  • 两个服务正在运行:service-somethingservice-anotherservice-database
  • service-somethingservice-another使用service-database来存储数据,例如mongodb://service-database/blahblah

我想要什么:

我要使用mongodb://service-database/blahblah代替mongodb://my-special-host/blahblah

理想情况下,我想要某种CNAME,其中my-special-host解析为service-database。这样,我可以一次将此条目更新为service-new-database,并且我的所有消费者服务都将使用新数据库。

我知道我可以在普通的linux上使用dnsmasq来做到这一点,但是我对如何在基于容器的生态系统中使用它感到困惑。

1 个答案:

答案 0 :(得分:1)

您可以使用docker network aliases选项

您的堆栈.yml文件中:

version: '3.4'
services: 
  service-database:
    image: postgres:9.5.16-alpine
    networks:
      default:
        aliases:
          - my-special-host

如果要在主机上使用相同的主机名,请将其添加到/etc/hosts文件中:

127.0.0.1 my-special-host

注意:请确保从外部公开端口以使用db