无法访问Docker容器内的Hapi服务器

时间:2020-04-17 11:59:49

标签: node.js docker hapijs

我用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>

当我尝试通过http://localhost:5000/sample甚至localhost:5000/sample上的邮递员访问它时,它总是说Couldn't connect to server,而当我在Chrome中打开时,它说的是相同的Can't display page

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如@pzaenger在HAPI服务器配置上所述,将localhost更改为0.0.0.0。

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