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

标签 docker networking dns docker-swarm dnsmasq

问题设置:

  • Docker 群
  • 3 个服务正在运行:service-somethingservice-another 以及 service-database
  • service-somethingservice-another 使用 service-database 来存储数据,例如 mongodb://service-database/废话

我想要什么:

我想使用 mongodb://my-special-host/blahblah 而不是 mongodb://service-database/blahblah

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

我知道我可以在普通 Linux 上使用 dnsmasq 来完成此操作,但我很困惑如何在基于容器的生态系统中使用它。

最佳答案

您可以使用docker网络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

注意:确保公开端口以从外部使用数据库

关于Docker - 服务的别名 DNS 条目 (CNAME),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53642960/

相关文章:

docker - package.json文件不会在Docker容器中保留

docker - 将图像推送到 Github 包会抛出 "denied: not_found: owner not found"

linux - 在 Ubuntu 上通过物理网络向自己发送流量

linux - 将我的域名重定向到特定端口

amazon-web-services - 启动配置中的用户数据与 Ansible

postgresql 容器未启动 : chmod: changing permissions of '/bitnami/postgresql/data' : Operation not permitted

Android快速切换到已知wifi网络

android - Android Volley 如何处理暂时失去网络连接?

node.js - 错误: quota exceeded (DNS resolutions : per day)

CSS 不适用于端口 8080 上的框架 url