Dockerizing Node.js应用程序

时间:2017-10-19 12:07:26

标签: node.js docker docker-compose dockerfile

在尝试将节点应用程序停靠时,当我访问localhost:8000时出现此错误:

  

重置了连接 - 重置了与服务器的连接   页面正在加载。

在终端上,当我在图像上使用run命令时,我在控制台中获得所需的输出。它说:

  

服务器在http://localhost:8000/

运行

Dockerfile:

FROM node

RUN mkdir -p /app/
WORKDIR /app

COPY package.json /app

RUN cd /app

RUN npm install

COPY . /app

CMD ["node", "index.js"]
EXPOSE 8000

index.js:

#!/usr/bin/env nodejs

var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(8000, 'localhost');
console.log('Server running at http://localhost:8000/');

的package.json:

{
  "name": "server1",
  "version": "1.0.0",
  "description": "Dockerizing node-app",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Himanshu",
  "license": "ISC"
}

这是我使用的运行命令

sudo docker run -p 8000:8000 -it --name node-container2 my-node-image

所有这些文件都保存在同一目录中。

1 个答案:

答案 0 :(得分:1)

只需将index.js更改为在容器内的0.0.0.0上工作:

#!/usr/bin/env nodejs

var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(8000, '0.0.0.0');
console.log('Server running at http://0.0.0.0:8000/');

您将能够通过主机上的localhost访问您的应用程序。