Can';t与simple Docker Node.js web应用程序通信

Can';t与simple Docker Node.js web应用程序通信,node.js,docker,dockerfile,Node.js,Docker,Dockerfile,我只是想同时学习Node.js和Docker。我有一个非常简单的Node.js应用程序,它监听端口并返回字符串。节点应用程序本身在本地运行时运行良好。我现在正试图让它在一个Docker容器中运行,但我似乎够不着它 以下是我的节点应用程序: const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; var count = 0; var server = http.createServer(fu

我只是想同时学习Node.js和Docker。我有一个非常简单的Node.js应用程序,它监听端口并返回字符串。节点应用程序本身在本地运行时运行良好。我现在正试图让它在一个Docker容器中运行,但我似乎够不着它

以下是我的节点应用程序:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

var count = 0;

var server = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end("Here's the current value: " + count);
    console.log('Got a request: ', req.url);
    count++;
});

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});
我的Dockerfile:

FROM node:latest

MAINTAINER Jason

ENV PORT=3000

COPY . /var/www
WORKDIR /var/www

EXPOSE $PORT

ENTRYPOINT ["node", "app.js"]
我的生成命令:

docker build -t jason/node .
和我的run命令:

docker run -p 3000:3000 jason/node
app.js文件和Dockerfile位于运行命令的同一目录中。在浏览器中导航到127.0.0.1:3000时,执行docker ps显示应用程序正在运行,但我刚刚得到一个无法访问站点错误。我还确认app.js已正确添加到图像中,并在运行后收到消息“Server running at”


我想我遗漏了一些非常简单的东西,有什么想法吗?

如果你在Windows 7/8上使用docker,你很可能有一台docker机器正在运行,那么你需要在192.168.99.100或你的docker机器拥有的任何ip上访问它

要查看是否正在运行docker机器,只需发出以下命令

docker-machine ls

省略主机名或在侦听功能上使用“0.0.0.0”。使其成为
server.listen(端口,'0.0.0',()=>{console.log(服务器正在运行..);})

省略
主机名
或在侦听功能上使用“0.0.0.0”。使其成为
server.listen(端口,'0.0.0',()=>{console.log(
server在http://${hostname}:${port}/
);})就是这样,谢谢尤瓦!创建一个答案,我会选择它。我有同样的问题,现在已经解决了。非常感谢你,Yuva.Windows10,没有列出docker机器。问题正如尤瓦在上面的评论中提到的那样。谢谢你,塞尔古。