node.js - Docker 正在运行但无法在本地主机上访问

标签 node.js docker

我对 Docker 很陌生。 对于我的 React 应用程序,我想创建一个 docker 容器。所以我按照https://nodejs.org/en/docs/guides/nodejs-docker-webapp/上的官方教程进行操作.

我接管了Dockerfile,只改变了node版本,以及.dockerignore。

Dockerfile

FROM node:10

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "npm", "start" ]

.dockerignore

node_modules
npm-debug.log

然后,按照教程中所述,我使用 docker build -t <your username>/node-web-app . 构建了图像。并使用 docker run -p 49160:8080 -d <your username>/node-web-app 运行它.

我知道它运行成功,因为我检查了日志。另外,从容器的 bash 内部我可以执行 curl -i localhost:8080并得到了有效的 html 结果。

从我的机器上 curl 服务器实例,执行 curl -i localhost:49160让我curl: (52) Empty reply from server .

我尝试了 localhost、127.0.0.1、0.0.0.0、我的 IPv4 地址以及各种端口。我不明白这一点。我不知道可能出了什么错误,因为我所做的一切就像nodejs官方文档中的那样。

最佳答案

docker run -p 49160:8080 这意味着您将 docker 容器中的 8080 端口绑定(bind)到真实主机上的 49160 端口。在您的情况下,来自主机的curl命令必须是curl -i localhost:49160而不是8080

关于node.js - Docker 正在运行但无法在本地主机上访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53489180/

相关文章:

javascript - 找不到模块 'esprima'

docker - 我如何获得一个docker容器来暴露端口,同时又阻止整个互联网?

docker - 使用无人机电子邮件插件时,无人机 CI 不会看到 secret 变量

docker - 无法在 Docker 中更新 Debian 容器

docker - 查看Docker图像层和最新版本的Docker?

docker - docker-compose.yml 上的 "ports"是否与 Dockerfile 上的 EXPOSE 效果相同?

javascript - 从 Google Earth KML 文件指向 latlng 转换

node.js - Express 4.0 中的 Heroku socket.io 示例错误

javascript - 将 Express 后端数据从数据库发送到 React 前端

node.js - 为什么在 Node.js 代码中使用 import 和 require()?