问题设置:
- Docker 群
- 3 个服务正在运行:
service-something
和service-another
以及service-database
service-something
和service-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/