【问题标题】:Can not connect to node app running in Docker container from browser无法从浏览器连接到在 Docker 容器中运行的节点应用程序
【发布时间】:2020-04-20 17:39:08
【问题描述】:

我在 Docker 容器中运行 nodejs 应用程序。该应用程序托管在我使用 SSH 连接到的 bluehost centOS VPS 上。我使用以下命令在容器中运行应用程序:sudo docker run -p 80:8080 -d skepticalbonobo/dandakou-nodeapp。然后我检查容器是否正在使用sudo docker ps 运行,确实如此。但是当我尝试使用域名或 IP 地址从 Chrome 访问应用程序时,我得到:“无法访问此站点”。然而,我注意到在 sudo docker ps 的输出中,在 COMMAND 下我得到docker-entrypoint... 而不是node app.js,我不知道如何修复它。您可以使用docker pull skepticalbonobo/dandakou-nodeapp 拉动容器。这是我的 Dockerfile 的内容:

RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app

WORKDIR /home/node/app

COPY package*.json ./

USER node

RUN npm install

COPY . .

USER root

RUN chown -R node:node . .

EXPOSE 8080

CMD [ "node", "app.js" ]

谢谢!

【问题讨论】:

  • 您是否能够从您的主机连接到在本地主机上运行(在 docker 中)的应用程序,例如卷曲?
  • 您能否在 Dockerfile 中包含 FROM 行,以及容器启动时打印的任何输出?如果它说“正在侦听 127.0.0.1:8080”之类的内容,它将无法从容器外部访问,您需要将该绑定地址更改为 0.0.0.0。
  • 你能尝试在本地运行 docker 容器吗?如果它运行正常,那么这是您在 Bluehost 之外设置访问权限的方式的问题
  • 检查防火墙设置bluehost,是否允许外部访问80端口。

标签: node.js docker centos vps bluehost


【解决方案1】:

Nodejs 应用的默认值为 3000。 运行以下命令并检查哪个端口节点应用正在运行

sudo docker run -ti skepticalbonobo/dandakou-nodeapp /bin/sh

在 Dockerfile 中公开仅用于文档目的。

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多