gpt4 book ai didi

docker - 在docker容器中运行时,nodejs应用程序未连接到本地主机

转载 作者:行者123 更新时间:2023-12-02 20:32:14 24 4
gpt4 key购买 nike

My environment:
Ubunut 17.04 LTS
npm --version: 5.6.0
nodejs --version: 4.7.2
angular cli version: 1.6.4

docker-compose文件:
version: '3'

services:
my-app:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
volumes:
- .:/usr/src/app
ports:
- "4200:4200"

我已在dockerfile中注释掉EXPOSE 4200,因为我已经从docker-compose.yml文件中挂载了它,不是吗,我应该在dockerfile中公开并在docker-compose中安装吗?

在命令行上运行npm start可以在浏览器中成功启动该应用程序,因为我能够转到 localhost:4200并看到该应用程序正在运行。

但是,如果我使用docker构建应用程序并运行docker-compose up,我发现nodejs服务器仍在 localhost:4200上运行,但是,我无法访问该应用程序,转到 localhost:4200不会显示该页面。

可以很好地运行该应用程序,我可以在浏览器上看到它:
ubuntu17@ubuntu17:~/playground/apps/myapp-ui$ ng serve
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
Date: 2018-01-16T16:22:51.912Z
Hash: 40ac2bd0588ee2136d15
Time: 13963ms
chunk {inline} inline.bundle.js (inline) 5.79 kB [entry] [rendered]
chunk {main} main.bundle.js (main) 275 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js (polyfills) 559 kB [initial] [rendered]
chunk {styles} styles.bundle.js (styles) 514 kB [initial] [rendered]
chunk {vendor} vendor.bundle.js (vendor) 12.1 MB [initial] [rendered]

webpack: Compiled successfully.

从DOCKER-COMPOSE上运行该应用程序会运行,但是我无法使用localhost:4200在浏览器上看到该应用程序

从docker-compose起
ubuntu17@ubuntu17:~/playground/apps/my-app-ui$ docker-compose up 
Creating network "my-app_default" with the default driver
Creating my-app_my-app_1 ... done
Attaching to my-app_my-app_1
my-app_1 | ** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
my-app_1 | Date: 2018-01-16T16:28:05.444Z
my-app_1 | Hash: 40ac2bd0588ee2136d15
my-app_1 | Time: 13584ms
my-app_1 | chunk {inline} inline.bundle.js (inline) 5.79 kB [entry] [rendered]
my-app_1 | chunk {main} main.bundle.js (main) 271 kB [initial] [rendered]
my-app_1 | chunk {polyfills} polyfills.bundle.js (polyfills) 549 kB [initial] [rendered]
my-app_1 | chunk {styles} styles.bundle.js (styles) 511 kB [initial] [rendered]
my-app_1 | chunk {vendor} vendor.bundle.js (vendor) 12.1 MB [initial] [rendered]
my-app_1 |
my-app_1 | webpack: Compiled successfully.

最佳答案

好的,正如您在问题中所说的那样,您的进程正在侦听localhost:4200上的连接。

在docker容器内部,localhost是容器本身的回送设备的地址,该地址与主机网络分开且不可访问。

您需要编辑节点进程,以使其通过编辑Dockerfile中的入口点来侦听所有地址,如下所示:

ENTRYPOINT ["ng", "serve", "-H", "0.0.0.0"]

关于docker - 在docker容器中运行时,nodejs应用程序未连接到本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48285857/

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