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