提问者:小点点

本地主机没有发送任何数据。ERR_EMPTY_RESPONSE节点JS


我正在尝试转换这个应用程序到docker,但我得到了这个错误。

这是我的express.js文件

const express = require("express");
const app = express();
const portNumber = 3000;
const sourceDir = "dist";
const expressStaticGzip = require("express-static-gzip");
app.use(
  "/",
  expressStaticGzip(sourceDir, {
    enableBrotli: true,
    orderPreference: ["br", "gz"],
    setHeaders: function(res, path) {
      res.setHeader("Cache-Control", "public, max-age=31536000");
    }
  })
);

app.listen(portNumber, () => {
  console.log(`Express web server started: http://localhost:${portNumber}`);
  console.log(`Serving content from /${sourceDir}/`);
});

这是我的码头档案

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "express.js" ]

我们很感激你的帮助。


共1个答案

匿名用户

这是一个非常常见的错误。当您在docker容器中广播时,通常必须在主机上收听,而不仅仅是。如果您侦听,docker将无法将流量从容器外部路由到容器内的环回接口。

您可以通过更新express代码来侦听来修复此问题。我相信是这样的:

app.listen(portNumber, "0.0.0.0", () => {
  console.log(`Express web server started: http://0.0.0.0:${portNumber}`);
  console.log(`Serving content from /${sourceDir}/`);
});

然后,您需要使用以下内容运行dockerfile:

docker build -t node-app .
docker run -p 3000:3000 node-app