Angularjs 暴露端口在docker中不起作用

Angularjs 暴露端口在docker中不起作用,angularjs,docker,dockerfile,Angularjs,Docker,Dockerfile,我有这个图像 FROM ubuntu:16.04 RUN apt-get update && \ apt-get install -y curl vim && \ curl -sL "https://deb.nodesource.com/setup_8.x" | bash - && \ apt-get install -y nodejs net-tools git && \ npm install

我有这个图像

FROM ubuntu:16.04

RUN apt-get update  && \
    apt-get install -y curl vim && \
    curl -sL "https://deb.nodesource.com/setup_8.x" | bash - && \
    apt-get install -y nodejs net-tools git && \
    npm install -g @angular/cli

EXPOSE 4200

WORKDIR /ng_app/jwt-auth

ENTRYPOINT ng serve
我用它运行

docker run -it -v `pwd`:/ng_app -d -p 4200:4200 --name ang_cli ang_cli
日志就是这个

** Angular Live Development Server is listening on localhost: 4200, open your browser on http://localhost:4200/ **
 3
Date: 2018-05-08T21:47:18.204Z
Hash: 993ee08f65694a2dd3c9
Time: 10559ms
chunk {main} main.js, main.js.map (main) 10.6 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 227 kB 
[initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 5.4 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 15.6 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 3.37 MB [initial] [rendered]
ℹ 「wdm」: Compiled successfully.
但是localhost:4200没有显示任何内容

我用
ng new jwt auth

我已经试过了

--expose
--net host

但是运气不好。

问题应该在这里:

** Angular Live Development Server is listening on localhost: 4200
这是容器的本地主机,因此端口4200对于docker主机以及使用映射的4200的任何其他机器都不可用

您应该使用0.0.0.0绑定运行ng:

ng serve --host 0.0.0.0

映射应该是有效的。

问题应该在这里:

** Angular Live Development Server is listening on localhost: 4200
这是容器的本地主机,因此端口4200对于docker主机以及使用映射的4200的任何其他机器都不可用

您应该使用0.0.0.0绑定运行ng:

ng serve --host 0.0.0.0

映射应该可以工作。

您是否尝试从容器本身将/telnet curl到4200?输出是
curlhttp://localhost:4200
curl:(52)服务器的空回复
我会有与@SimoneZabberoni类似的想法。您是通过VM运行Docker还是直接在主机上运行Docker?如果您正在通过虚拟机运行Docker(如Mac版Docker和Windows版Docker),则需要获取虚拟机的网络地址才能通过其公开端口访问容器。因此,问题不在4200:4200映射中,而是在容器化应用程序中。你在live日志中看到什么了吗?正如我发布的Simonet一样,你是否尝试从容器本身将curl/telnet设置为4200?输出是
curlhttp://localhost:4200
curl:(52)服务器的空回复
我会有与@SimoneZabberoni类似的想法。您是通过VM运行Docker还是直接在主机上运行Docker?如果您正在通过虚拟机运行Docker(如Mac版Docker和Windows版Docker),则需要获取虚拟机的网络地址才能通过其公开端口访问容器。因此,问题不在4200:4200映射中,而是在容器化应用程序中。你在现场日志中看到什么了吗?就是我发布的Simone