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