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-network
和 backend-network
中,所以我想知道是否真的可以沟通,或者是否不可能
您的 Angular 前端应用程序将不会 运行 在您的服务器 运行ning 所在的同一台机器上。基本上,您的前端应用程序将被传送到客户端浏览器(例如通过 Nginx),然后它需要通过连接与服务器(后端应用程序)通信。
您将必须使用您的服务器 IP 地址(或域名)进行 API 调用,当然,您需要在服务器内部公开您的后端应用程序并将其发布到正确的端口。
在问我的问题之前,我已经访问过这个 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-network
和 backend-network
中,所以我想知道是否真的可以沟通,或者是否不可能
您的 Angular 前端应用程序将不会 运行 在您的服务器 运行ning 所在的同一台机器上。基本上,您的前端应用程序将被传送到客户端浏览器(例如通过 Nginx),然后它需要通过连接与服务器(后端应用程序)通信。
您将必须使用您的服务器 IP 地址(或域名)进行 API 调用,当然,您需要在服务器内部公开您的后端应用程序并将其发布到正确的端口。