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

时间:2016-07-22 10:54:06

标签: node.js docker localhost

我正在尝试在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

0 个答案:

没有答案