首页 > 解决方案 > 无法访问 Docker 容器内的 Hapi 服务器

问题描述

我用 Hapi 构建了一个简单的 NodeJS 服务器,并尝试在 Docker 容器中运行它。

它在 Docker 中运行良好,但我无法访问它(即使我已经完成了端口映射)。

const hapi = require("@hapi/hapi");


const startServer = async () => {
   const server = hapi.Server({
    host: "localhost",
    port: 5000,
  });

    server.route({
        method: 'GET',
        path: '/sample',
        handler: (request, h) => {

            return 'Hello World!';
        }
    });
     await server.start();
     console.log(`Server running on port ${server.settings.port}`);
 };

 startServer();

Docker文件如下:

FROM node:alpine

WORKDIR /usr/app

COPY ./package.json ./
RUN npm install

COPY ./ ./

CMD [ "npm","run","dev" ]

要运行 docker,我首先使用以下命令构建:

docker build .

然后我运行从上面的命令得到的图像来做端口映射:

docker run -p 5000:5000 <image-name>

当我尝试通过邮递员 onhttp://localhost:5000/sample或什至访问它时localhost:5000/sample,它一直在说Couldn't connect to server,当我在 chrome 中打开时,它说同样的Can't display page

PS。当我在没有 Docker 容器的情况下像往常一样运行代码时,只需npm run dev从我的终端运行,代码就可以正常运行。

所以,我有信心,API 代码很好。

有什么建议么??

标签: node.jsdockerhapijs

解决方案


正如@pzaenger 在您的 HAPI 服务器配置中提到的,将 localhost 更改为 0.0.0.0。

host: 'localhost' to host: '0.0.0.0',

推荐阅读