Docker文件
FROM node:8
RUN mkdir -p /home/node/app && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package*.json ./
USER node
RUN npm install
COPY --chown=node:node . .
EXPOSE 80
CMD ["npm", "start"]
index.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end("Hello world \n");
});
server.listen(port, hostname, () => {
console.log(`server is running at abcxyz http://${hostname}:${port}/`);
});
docker run -p 80:3000 ...
const hostname = '0.0.0.0';
在您的代码中,服务器侦听PORT 3000并且您已将PORT 80暴露给HOST,这意味着PORT 80在docker容器内没有任何对应的运行,您实际上必须从docker容器EXPOSE PORT 3000并使用它。
您可以使用此命令映射到主机中可用的端口,其中:之前的端口号:表示在主机和端口号中公开的端口:代表在公开的AFAIK的docker容器中的端口。
docker run -p 80:80