我用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代码很好。
有什么建议吗?
答案 0 :(得分:0)
如@pzaenger在HAPI服务器配置上所述,将localhost更改为0.0.0.0。
host: 'localhost' to host: '0.0.0.0',