Javascript 无法将nodeapp停靠

Javascript 无法将nodeapp停靠,javascript,node.js,docker,Javascript,Node.js,Docker,创建docker文件,如下所示: 构建应用程序: docker build-t appname 运行应用程序: docker run-it appname 在main.js中,我有: 当我使用docker命令“docker run-it appname”运行应用程序时,我会将其输出到控制台: 节点应用程序正在端口3001上运行 但当我浏览时,页面是空的,或者浏览器/输出/视图中没有加载任何内容。它应该从response.render'public_html/'中提取index.html 您需要显

创建docker文件,如下所示:

构建应用程序:

docker build-t appname

运行应用程序:

docker run-it appname

在main.js中,我有:

当我使用docker命令“docker run-it appname”运行应用程序时,我会将其输出到控制台:

节点应用程序正在端口3001上运行


但当我浏览时,页面是空的,或者浏览器/输出/视图中没有加载任何内容。它应该从response.render'public_html/'中提取index.html

您需要显式公开应用程序应该运行的端口:

docker run -p 3001:3001 your-node-image
然后可以在docker主机上的下访问容器的服务,因为-p 3001:3001将主机端口3001(参数中的第一个3001)绑定到容器的端口3001(第二个3001)

EXPOSE from your Dockerfile仅描述应用程序在Dockerfile 4500和程序端口3001中公开的端口。。。?为什么它们不同?。要访问容器,还需要使用-p发布端口:

EXPOSE指令通知Docker容器在运行时侦听指定的网络端口。EXPOSE不会使主机可以访问容器的端口。为此,必须使用-p标志发布一系列端口,或者使用-p标志发布所有公开的端口

此外,标志-它似乎对您的服务毫无用处。当您想要进行交互式会话时,例如在容器中启动shell时,需要这些标志


请参阅此处有关端口公开的更多信息

我已经在docker文件中公开了端口,如:EXPOSE 4500,所以它不起作用?不,我扩展了答案。您需要使用-p发布端口,以便从主机访问它们,以便我可以在端口6000上执行docker run-p 3001:6000您的节点映像并打开我的应用程序?顺序错误:docker run-p 6000:3001您的节点映像。是PORT_主机:PORT_CONTAINEROh现在我看到图片了。非常感谢。
var express = require("express");
var app = express();
var path = require('path');
var http = require('http');
var https = require('https');
var nodemailer = require('nodemailer');
var bodyParser = require('body-parser');
var request = require("request");

var port = process.env.PORT || 3001;
app.set('port', (port));
app.listen(app.get('port'), function () {
    console.log('Node app is running on port', app.get('port'));
});

//app.use('/', express.static(path.join(__dirname, '/public_html')))
app.use('/', express.static(__dirname + '/public_html'));
app.use(bodyParser.json({limit: '5mb'}));
app.use(bodyParser.urlencoded({
    limit: '5mb',
    extended: false
}));


app.get('/', function(request, response) {
  response.render('public_html/');
});

//app.get('/', function (req, res, next) {
//    res.sendFile('/index.html');
//});

app.use('*', function (req, res, err) {
//    console.log('error:  ', err);
});
docker run -p 3001:3001 your-node-image