我只是想同时学习Node.js和Docker。我有一个非常简单的Node.js应用程序,该应用程序侦听端口并返回一个字符串。在本地运行时,Node应用程序本身运行良好。我现在正在尝试使其在Docker容器中运行,但似乎无法达到。
这是我的Node应用程序:
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 .
而我的运行命令:
docker run -p 3000:3000 jason/node
app.js文件和Dockerfile位于我运行命令的相同目录中。进行docker ps显示应用程序正在运行,但在浏览器中导航至127.0.0.1:3000时,我只是得到一个无法访问网站的错误。我还确认已将app.js正确添加到映像中,并且在运行后收到消息“服务器正在http://127.0.0.1:3000/运行”。
我想我缺少了一些非常简单的东西,有什么想法吗?
hostname
在监听功能上忽略或使用“ 0.0.0.0”。做了server.listen(port, '0.0.0.0', () => { console.log(Server running..); });
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句