首页 > 解决方案 > 我的 Angular 应用程序的容器无法与 Docker 上的 API 容器通信

问题描述

我是 Docker 的新手,我正在尝试在 Docker 容器上运行 Angular 应用程序,该应用程序向另一个 Docker 容器上运行的 API 发出服务请求

它们都在同一个网络上运行,如您所见,我可以从一个容器 ping 到另一个容器。

从 Angular 容器 ping 到 API 容器

当我在本地端口 3000 上公开服务时,我可以看到服务正在运行

浏览器访问 localhost:3000

但是当我的 Angular 应用程序调用该服务时,请求超时并给我这个错误:

获取http://172.69.69.1:8080/net::ERR_CONNECTION_TIMED_OUT _

我的 Angular 应用程序上的 Dockerfile 如下所示:

 FROM node:8

 WORKDIR /usr/src/app

 COPY package.json /usr/src/app/package.json
 RUN npm install
 RUN npm install -g @angular/cli@6.1.5

 COPY . /usr/src/app

 CMD ng serve

我用来运行我的 API 的命令是

 docker run --name hello-service --ip 172.69.69.1 -p 3000:8000 --network mtsds_test hello-service

我用于我的应用程序的那个是

docker run -it -v /usr/src/app -v /usr/src/app/node_modules -p 4200:4200 --rm --network mtsds_test angular_mtsds

我在我的 Angular 应用程序上运行此服务

   public sayHello(){
      return this._http.get('http://172.69.69.1:8080');
   }

标签: angulardockervert.x

解决方案


关于您的 docker-run 命令,我不知道 8080 端口的来源:

docker run --name hello-service --ip 172.69.69.1 -p 3000:8000 --network mtsds_test hello-service

然后,您应该使用公开的端口 8000 或发布的端口 3000,但不要使用 8080。


推荐阅读