当前位置: 首页 > 知识库问答 >
问题:

无法通过浏览器访问Docker中运行的Node.js应用程序

艾茂学
2023-03-14

我正在尝试运行一个节点。docker上的js应用程序。我正在使用WSL,并已在docker上成功运行该应用程序。现在的问题是,当我尝试在浏览器上访问应用程序时,它显示为无响应。我无法在浏览器中访问它。我还有一个Reactjs应用程序在docker上运行,我可以通过浏览器访问该应用程序。我做错了什么?为什么在windows浏览器中无法访问Nodejs应用程序?下面是节点的Dockerfile。js

# pull official base image
FROM node:12.18.3-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent

# add app
COPY . ./


# start app
CMD ["npm", "run", "dev"]

下面是用于在docker中运行应用程序映像的命令

docker build -t gdns/node-app .

winpty docker run \
    -it \
    --rm \
    -v ${PWD}:/app \
    -v /app/node_modules \
    -p 4000:4000 \
    -e CHOKIDAR_USEPOLLING=true \
    gdns/node-app

节点。js应用正在运行,我可以查看如下日志

请帮忙

共有3个答案

韩耘豪
2023-03-14

我已更改节点中的代码。js应用程序在“0.0.0.0”上收听。

const hostname = '0.0.0.0';
const port = 4000;
server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});
缪兴腾
2023-03-14

您必须公开容器内的nodejs端口。您只需打开容器的主机端口4000,但容器未打开端口4000,因此您必须在Dockerfile中进行更改

修改了Dockerfile

# pull official base image
FROM node:12.18.3-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent

# add app
COPY . ./

EXPOSE 4000

# start app
CMD ["npm", "run", "dev"]

拓拔坚
2023-03-14

可以您正在wsl中运行docker。WSL是windows操作系统上的虚拟机箱。所以它有自己的网络适配器。因此,请通过“ifconfig”命令查找wsl的IP。它会告诉你wsl的IP地址。

然后,您可以从浏览器连接该IP

http://wsl-ip:4000

 类似资料:
  • 我的Google API有问题。我希望避免通过浏览器检索我的访问授权。我想将代码直接检索到一个变量中。这是我发送的URL:

  • 我已经创建了一个docker映像来测试Angular应用程序,但是我无法在docker容器内从主机连接到正在运行的应用程序。 该图像是使用带有:EXPOSE 4200 8080 80的Dockerfile创建的 我使用命令运行docker容器:docker run-ti-p 4200:4200angulardev/bin/bash 在容器内部,我创建了Angular应用程序,并使用:ng serv

  • 我制作了一个Java桌面应用程序,可以创建多个交互式窗口。我想向人们展示的不是压缩文件夹存档的下载链接,而是一个在他们打开我的网站后立即运行的程序。 在NetBeans编程环境中为这个项目启用Java Web Start,让我得以启动。html页面并启动。启动应用程序的jnlp文件。除了一个小细节,它还能工作。我需要在JAR文件旁边包含图标和其他文件,以便使其完全正常工作。打开网站时,这些文件可能

  • 问题内容: 我有一个Java小程序,用于查询Oracle数据库中的数据。从IDE内部运行时,它可以正常运行。但是,当我将其作为嵌入在网页中的小程序运行时,在类加载器中出现“访问被拒绝”错误,并且我并没有最模糊的想法对我有什么要求: 问题答案: 小程序在具有严格限制的安全规则的环境中运行。您至少需要在小程序上签名。 但是,这里的问题更大,在小程序内执行JDBC是一个非常糟糕的主意。该applet的源

  • 我有一个Spring Boot应用程序,它在9000端口本地运行(不在容器中)。应用程序已将致动器配置为Prometheus测微计,整个统计信息可通过URL localhost获得:9000/致动器/Prometheus。 我使用以下命令在Docker容器中运行Prometheus: 普罗米修斯。yml公司 命令返回以下内容: 我怎样才能解决这个问题? 感谢您的帮助!

  • 问题内容: 我已经创建了一个Docker映像来测试Angular应用程序,但是无法从主机连接到Docker容器中正在运行的应用程序。 该映像是使用具有以下内容的Dockerfile创建的:EXPOSE 4200 8080 80 我使用以下命令运行docker容器:docker run -ti -p 4200:4200 angulardev / bin / bash 在容器内,我创建Angular应