Docker 容器在不同网络通信

Docker containers in different networks communication

在问我的问题之前,我已经访问过这个 question 但我没有看到任何答案。

以下场景是我有一个前端应用程序 (Angular),与 API(节点)隔离在两个单独的容器中,也在两个单独的网络中。像这样:

version: '3.9'

services:

  # Backend config
  backend-app:
    image: minas-app:1.0.0
    ports:
      - 3000:3000
    networks:
      - backend

  # FrontEnd config   
  frontend-app:
    image: front-minas:1.0.0
    ports:
      - 8080:80
    networks:
      - frontend

networks:
  backend:
    driver: overlay
    attachable: true
  frontend:
    driver: overlay
    attachable: true

我的前端在 nginx 服务器上,但是在调用时,它向自己请求而不是我的 API。

在一个论坛上,他们说应该解决这个问题:在 package.json

中添加 "proxy":"http://server:3000"

但我真正想知道的是,我的前端如何与后端通信以进行 API 调用?

编辑:最常见的问题是关于同一网络上的 2 个容器 运行,在这种情况下,我将它们隔离到 frontend-networkbackend-network 中,所以我想知道是否真的可以沟通,或者是否不可能

您的 Angular 前端应用程序将不会 运行 在您的服务器 运行ning 所在的同一台机器上。基本上,您的前端应用程序将被传送到客户端浏览器(例如通过 Nginx),然后它需要通过连接与服务器(后端应用程序)通信。

您将必须使用您的服务器 IP 地址(或域名)进行 API 调用,当然,您需要在服务器内部公开您的后端应用程序并将其发布到正确的端口。