当我直接按类型npm start
或node index.js
运行时,127.0.0.1:4444
站点页面将成功打开。但是,如果我使用Docker使其能够与EC2一起运行,它可以在我的PC上运行,但无法打开网站127.0.0.1:4444
。
这是我的密码。
index.js
var app = require('http').createServer(handler)
var fs = require('fs');
app.listen(4444);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
var io = require('socket.io')(app);
io.on('connection', function (socket) {
console.log('Hello, socket.io~');
});
Dockerfile
FROM node:12
COPY package.json /src/package.json
RUN cd /src
RUN npm install
RUN npm install socket.io
COPY . /src
WORKDIR /src
CMD ["npm", "start"]
package.json
{
"name": "hahaha",
"version": "12.19.0",
"description": "my first socket.io",
"main": "index.js",
"dependencies": {
"socket.io": "^2.3.0"
},
"devDependencies": {},
"scripts": {
"start" : "node index.js"
},
"author": "",
"license": "ISC"
}
.dokerignore
node_modules/
和全路径图像路径
请帮帮我。
尝试在dockerfile中公开端口4444。
https://docs.docker.com/engine/reference/builder/#expose
当Mario的答案-EXPOSE 4444和camba1的答案-p 4444:4444时,它没有起作用,但当我同时使用它时,这意味着,我写了EXPOSE 4424并构建了运行-p 444:4444。-