0
我在Ubuntu服务器上运行一个dokku容器内的节点应用程序,它也为DNS运行bind9
。在节点应用程序中,我正在运行快车。在节点的应用程序,我运行像这样在客户端的IP DNS反向查询(简体):来自dokku容器的DNS查询
const dns = require('dns');
const app = require('express')();
app.get('/myhostname', (req, res) => {
dns.reverse(req.headers['x-forwarded-for'], (err, hostnames) => {
res.json({ hostname: hostnames[0] });
});
});
也能正常工作本地,但是一旦部署到dokku容器,失败与ENOTFOUND
错误。据推测,这是因为该应用没有设置为使用Ubuntu服务器作为其DNS服务器。所以,我想这个权利require('dns')
后:
dns.setServers([process.env.DNS_SERVERS])
其中DNS_SERVERS
被设置为服务器的本地局域网IP,或者它的码头工人内部IP。这些地址中的任何一个都会导致延迟并最终超时尝试获取地址。
我应该怎么办?
是bind配置为侦听其Ubuntu的服务器对泊坞窗桥IP?您是否尝试过使用'--dns' [docker run参数](https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/)(并提供Ubuntu服务器的Docker的IP桥)? – joelnb
谢谢。您的评论帮助我找到了解决方案,我将在下面写出答案。 – felamaslen