Docker容器运行json-server但浏览器无法访问页面求助
Docker容器中运行json-server无法通过浏览器访问的解决方法
在Docker容器中启动json-server后,浏览器访问localhost:3000提示页面无法正常工作,相关配置及情况如下:
配置详情
Dockerfile内容
FROM node:16.18.1-alpine WORKDIR /app COPY package.json /app RUN npm install EXPOSE 3000 COPY . /app ENTRYPOINT ["npm", "start"]
package.json启动脚本
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "json-server --watch db.json" },
运行情况
- Docker日志显示json-server已启动,默认监听容器内的
localhost:3000 - 浏览器访问
localhost:3000时页面无法正常加载
预期的db.json数据
{ "currency" : [ { "id": 1, "rate": 117, "value": "usd", "currency": "USD", "selected": true } ] }
问题原因与解决步骤
问题根源是json-server默认仅监听容器内部的localhost,外部主机无法访问该地址。按以下步骤修改即可解决:
- 修改启动脚本:更新package.json中的start命令,让json-server监听容器所有网卡地址
"start": "json-server --watch db.json --host 0.0.0.0"
- 重新构建镜像
docker build -t json-server-image .
- 运行容器并映射端口(确保端口映射正确,若之前运行时未加
-p参数需补充)
docker run -p 3000:3000 json-server-image
修改完成后,浏览器访问localhost:3000即可正常获取json-server提供的数据。
内容的提问来源于stack exchange,提问作者Abzed Ibra
相关产品推荐
相关产品推荐

