具有Angular2应用程序和NodeJs的Docker容器没有响应

时间:2017-01-05 12:25:05

标签: node.js angular docker

我通过angular-cli创建了新的Angular2应用程序并在Docker中运行它。但我无法从localhost连接它。

首先我在我的本地机器上启动应用程序:

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

我是通过命令开始的:

docker run -p 4200:4200 my-ui

然后试试我的localhost:

curl localhost:4200

并收到

  

卷曲:(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"]

2 个答案:

答案 0 :(得分:8)

您似乎使用ng serve来运行开发服务器,默认情况下它在循环接口上启动(仅在localhost上可用)。您应该提供具体的参数:

ng serve --host 0.0.0.0

在所有接口上运行它。

答案 1 :(得分:3)

您需要更改angular-cli以便在外部提供应用,例如将您的npm脚本更新为ng serve --host 0.0.0.0