我正在尝试在Docker容器中运行node.js / mocha集成测试。作为集成测试的一部分,我在子进程中启动Web服务器(例如localhost:8000),然后查询不同的URL以查看是否所有内容都按预期工作(例如localhost:8000 / some / file.json) - 容器内的所有内容。
所有东西都在Docker容器之外工作但是当我在Docker中运行时,似乎无法正确解析localhost,因此请求保留在容器中。
如何通过localhost访问在同一个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上发现的大多数主题都是关于将主机连接到Docker,但我在Docker中找不到任何有关localhost的内容。
非常感谢任何帮助!
更新:
/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