node.js - 无法访问 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 代码很好。
有什么建议么??
解决方案
正如@pzaenger 在您的 HAPI 服务器配置中提到的,将 localhost 更改为 0.0.0.0。
host: 'localhost' to host: '0.0.0.0',
推荐阅读
- reactjs - 在单个路由路径中合并/渲染多个组件
- swift - 如何将swiftui的背景颜色设置为lightGray?
- javascript - 函数(api调用)返回一个空数组
- ruby-on-rails - 缺少模板问题,呈现非默认视图
- c++ - 什么是 std::chrono::time_point 等效于 std::numeric_limits::infinity()?
- flutter - 如果使用背景,在不同页面上使用 FloatingActionButton?
- python - 如果 __name__==__main__ 运行,为什么我的 python 脚本会继续运行?
- pytorch - 如何使用 pytorch-lightning 将模型权重保存到 mlflow 跟踪服务器?
- python - KeyError 访问嵌套字典中的数据
- heroku - 'heroku.pkg' 无法打开,因为 Apple 无法检查它是否存在恶意软件