通过脚本访问服务器,两者都在同一个Docker容器中运行

我试图在Docker容器中运行node.js / mocha集成testing。 作为我的集成testing的一部分,我启动subprocess中的Web服务器(例如localhost:8000),然后查询不同的URL以查看是否一切按预期工作(例如localhost:8000 / some / file.json) – 容器内的所有内容。

一切工作在Docker容器之外,但是当我在Docker中运行时,好像本地主机无法正确parsing,以便请求保留在容器内。

如何通过本地主机访问在同一个Docker容器内运行的服务器?

例如,以下脚本在Docker容器中运行时会导致503错误。

var express = require('express'); var request = require('request'); request.debug = true; var port = 8000; var app = express(); app.use('/', express.static(__dirname)); app.listen(port, function() { console.log('server started', port); request('http://localhost:'+port+'/package.json', function(err, response) { console.log('err', err); console.log('status', response.statusCode); }); }); 

我已经尝试了几件事情,如通过bash连接并使用curl来检查服务器是否正在运行。 当我将端口暴露给我的主机时,似乎服务器正常启动。

我在SO或Google上find的大多数主题都是关于将主机连接到Docker,但是我没有在Docker中find任何关于本地主机的信息。

任何帮助深表感谢!

更新: /etc/hosts有以下内容:

 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 44453c0f8f46