暴露端口在 docker 中不起作用

J. *_*daz 2 angularjs docker dockerfile

我有这张图片

\n\n
FROM ubuntu:16.04\n\nRUN apt-get update  && \\\n    apt-get install -y curl vim && \\\n    curl -sL "https://deb.nodesource.com/setup_8.x" | bash - && \\\n    apt-get install -y nodejs net-tools git && \\\n    npm install -g @angular/cli\n\nEXPOSE 4200\n\nWORKDIR /ng_app/jwt-auth\n\nENTRYPOINT ng serve\n
Run Code Online (Sandbox Code Playgroud)\n\n

我运行它

\n\n
docker run -it -v `pwd`:/ng_app -d -p 4200:4200 --name ang_cli ang_cli\n
Run Code Online (Sandbox Code Playgroud)\n\n

日志是这个

\n\n
** Angular Live Development Server is listening on localhost: 4200, open your browser on http://localhost:4200/ **\n 3\nDate: 2018-05-08T21:47:18.204Z\nHash: 993ee08f65694a2dd3c9\nTime: 10559ms\nchunk {main} main.js, main.js.map (main) 10.6 kB [initial] [rendered]\nchunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 227 kB \n[initial] [rendered]\nchunk {runtime} runtime.js, runtime.js.map (runtime) 5.4 kB [entry] [rendered]\nchunk {styles} styles.js, styles.js.map (styles) 15.6 kB [initial] [rendered]\nchunk {vendor} vendor.js, vendor.js.map (vendor) 3.37 MB [initial] [rendered]\n\xe2\x84\xb9 \xef\xbd\xa2wdm\xef\xbd\xa3: Compiled successfully.\n
Run Code Online (Sandbox Code Playgroud)\n\n

但 localhost:4200没有显示任何内容

\n\n

我创建了一个空应用程序ng new jwt-auth

\n\n

我已经尝试过了

\n\n
--expose\n--net host\n
Run Code Online (Sandbox Code Playgroud)\n\n

但没有运气。

\n

小智 5

问题应该出在这里:

** Angular Live Development Server is listening on localhost: 4200
Run Code Online (Sandbox Code Playgroud)

这是容器的 localhost,因此 docker 主机以及使用映射的 4200 的任何其他计算机将无法使用端口 4200。

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

ng serve --host 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

并且映射应该可以工作。