Docker容器与Angular2应用程序和NodeJs不响应

我通过angular-cli创build了新的Angular2应用程序,并在Docker中运行它。 但我不能从本地连接它。

起初,我在本地机器上启动应用程序:

ng new project && cd project && "put my Dockerfile there" && docker build -t my-ui . 

我通过命令启动它:

 docker run -p 4200:4200 my-ui 

然后尝试我的本地主机:

 curl localhost:4200 

并接收

curl:(56)Recv失败:连接被同级重置

然后,我试着切换到运行容器( docker exec -ti container-id bash )并运行curl localhost:4200并且它可以工作。

我也试着用–net = host param运行容器:

 docker run --net=host -p 4200:4200 my-ui 

它工作。 问题是什么? 我也尝试在守护进程模式下运行容器,并没有帮助。 谢谢。

我的Dockerfile

 FROM node RUN npm install -g angular-cli@v1.0.0-beta.24 && npm cache clean && rm -rf ~/.npm RUN mkdir -p /opt/client-ui/src WORKDIR /opt/client-ui COPY package.json /opt/client-ui/ COPY angular-cli.json /opt/client-ui/ COPY tslint.json /opt/client-ui/ ADD src/ /opt/client-ui/src RUN npm install RUN ng build --prod --aot EXPOSE 4200 ENV PATH="$PATH:/usr/local/bin/" CMD ["npm", "start"] 

看来你使用ng serve来运行开发服务器,它默认启动循环接口(仅在本地主机上可用)。 你应该提供具体的参数:

 ng serve --host 0.0.0.0 

在所有接口上运行它。

你需要改变angular-cli来为外部应用程序提供服务,例如更新你的npm脚本到ng serve --host 0.0.0.0