node.js - 带有 Angular2 应用程序和 NodeJs 的 Docker 容器没有响应

标签 node.js angular docker

我通过 angular-cli 创建了新的 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 failure: Connection reset by peer

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

我还尝试使用 --net= host 参数运行容器:

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 来运行开发服务器,默认情况下它在循环接口(interface)上启动(仅在 localhost 上可用)。您应该提供具体参数:

ng serve --host 0.0.0.0

在所有接口(interface)上运行它。

关于node.js - 带有 Angular2 应用程序和 NodeJs 的 Docker 容器没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485063/

相关文章:

node.js - 如何在 AWS Lambda Node.js 运行时异步发出 HTTP 请求

node.js - 不一致地出现错误 : [$injector:modulerr] Failed to instantiate module

Angular-cli 与 Sailsjs 集成

php-fpm 连接被对等方重置

docker - 在 docker 容器内设置语言环境

node.js - Mongoose 打字问题与 typescript

javascript - 获取用户名和密码,这段代码对吗?

javascript - 从 GeoFire 对象数组中删除重复项

http - 在 angular2 中的 http 响应后填写表单

django - docker-compose + django + redis - 错误 111 连接到 127.0.0.1 :6379. 连接被拒绝