无法通过浏览器访问 docker 中的 Node.js 应用程序 运行
Can't access Node.js app running in docker through browser
我正尝试在 docker 上 运行 一个 Node.js 应用程序。我正在使用 WSL 并已成功 运行 docker 上的应用程序。现在的问题是,当我尝试在浏览器上访问该应用程序时,它显示为无响应。我无法在浏览器中访问它。我在 docker 上还有另一个 Reactjs 应用程序 运行ning,我可以通过浏览器访问该应用程序。我究竟做错了什么?为什么无法在 windows 浏览器中访问 Nodejs 应用程序?下面是 Node.js
的 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 . ./
# 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
Node.js应用是运行ning,我可以查看如下日志
请帮忙
好的。你是 wsl 中的 运行 一个 docker。 WSL 是 windows os 之上的一个虚拟盒子。所以它有自己的网络适配器。所以请通过“ifconfig”命令找到wsl的IP。它会告诉你wsl的IP。
然后您可以从您的浏览器连接该IP
http://wsl-ip:4000
您必须 expose
容器内的 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"]
我已经更改了 Node.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}/`);
});
我正尝试在 docker 上 运行 一个 Node.js 应用程序。我正在使用 WSL 并已成功 运行 docker 上的应用程序。现在的问题是,当我尝试在浏览器上访问该应用程序时,它显示为无响应。我无法在浏览器中访问它。我在 docker 上还有另一个 Reactjs 应用程序 运行ning,我可以通过浏览器访问该应用程序。我究竟做错了什么?为什么无法在 windows 浏览器中访问 Nodejs 应用程序?下面是 Node.js
的 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 . ./
# 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
Node.js应用是运行ning,我可以查看如下日志
请帮忙
好的。你是 wsl 中的 运行 一个 docker。 WSL 是 windows os 之上的一个虚拟盒子。所以它有自己的网络适配器。所以请通过“ifconfig”命令找到wsl的IP。它会告诉你wsl的IP。
然后您可以从您的浏览器连接该IP
http://wsl-ip:4000
您必须 expose
容器内的 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"]
我已经更改了 Node.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}/`);
});