gpt4 book ai didi

docker - 无法从主机访问正在运行的 docker 容器(localhost :8081)

转载 作者:行者123 更新时间:2023-12-02 09:48:32 26 4
gpt4 key购买 nike

使用 Ubuntu。

基于本指南:

https://www.freecodecamp.org/news/how-to-use-routing-in-vue-js-to-create-a-better-user-experience-98d225bbcdd9/

我创建了一个最小的 vuejs 项目,其项目结构如下:

https://github.com/dev-samples/samples/tree/master/vuejs-001

frontend-router/
build/
config/
src/
static/
test/
build.sh
Dockerfile.dev
package-lock.json
package.json

地点:

Dockerfile.dev

FROM node:10
RUN apt install curl
RUN mkdir /app

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

# install and cache app dependencies
COPY package.json /app/package.json

# make the 'app' folder the current working directory before running npm install
WORKDIR /app

RUN npm install
CMD [ "npm", "run", "dev" ]

我正在构建图像并使用该图像运行容器:

docker build -t frontend-router-image -f Dockerfile.dev .
docker rm -f frontend-router-container

docker run -it -p 8081:8080 -v ${PWD}:/app/ -v /app/node_modules --name frontend-router-container frontend-router-image

给出:

DONE  Compiled successfully in 1738ms                                                                                                                                                    3:49:45 PM

I Your application is running here: http://localhost:8080

由于我将 -p 8081:8080 添加到 docker run 命令,我希望可以从主机浏览器访问该应用程序:

http://localhost:8081/

但它只是给出以下错误:

enter image description here

当我从主机上使用 vanilla npm 运行它时,我工作得很好。但是,当应用程序从 Docker 容器内部运行时,为什么我无法访问该应用程序呢?

源代码在这里:

https://github.com/dev-samples/samples/tree/master/vuejs-001

按照下面的建议,我已经尝试过:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e011fb9e39e8 frontend-router-image "docker-entrypoint.s…" 12 seconds ago Up 9 seconds 0.0.0.0:8081->8080/tcp frontend-router-container

$ docker run -it --rm --net container:frontend-router-container nicolaka/netshoot ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:8080 0.0.0.0:*

作为比较,这个项目运行良好:

https://github.com/dev-samples/samples/tree/master/vuejs-002

这意味着当我运行容器时,我可以在 localhost:8081 上的主机浏览器上访问 Web 应用程序

最佳答案

基于此:

https://github.com/webpack/webpack-dev-server/issues/547

和:

https://dev.to/azawakh/don-t-forget-to-give-host-0-0-0-0-to-the-startup-option-of-webpack-dev-server-using-docker-1483

https://pythonspeed.com/articles/docker-connection-refused/

如果我改变它就会起作用:

host: 'localhost', // can be overwritten by process.env.HOST

至:

host: '0.0.0.0', // can be overwritten by process.env.HOST

在文件中:/frontend-router/config/index.js

关于docker - 无法从主机访问正在运行的 docker 容器(localhost :8081),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com