我有一个开放端口80的Ubuntu远程服务器。端口80用于前端,而我的应用程序的后端位于端口8080上。
我的docker-compose.yml文件:
version: '3.3'
services:
frontend:
image: bloomingthebrand/developers:frontv0.0.12
ports:
- 80:80
depends_on:
- backend
backend:
image: bloomingthebrand/developers:backv0.0.4
ports:
- 8080:8080
由于服务器上没有打开8080端口,因此我希望它们在内部进行通信。我尝试放置网络属性,但无法访问http:// mynet:8080 / api
version: '3.3'
services:
frontend:
image: bloomingthebrand/developers:frontv0.0.12
ports:
- 80:80
depends_on:
- backend
networks:
- mynet
backend:
image: bloomingthebrand/developers:backv0.0.4
ports:
- 8080:8080
networks:
- mynet
networks:
mynet:
driver: bridge
ipam:
driver: default
我也尝试访问http://host.docker.internal:8080/,但仅在寡妇上有效,我的服务器在ubuntu上
最佳答案
当使用compose进行angular和react开发时,您通常需要在您的api调用中使用angular / react代理,默认情况下,这些框架不会这样做,并且您的浏览器将尝试进行这些调用,这就是您所遇到的情况。看一下这个 Angular 例子,以及它如何在app-ui / proxy.conf.json中设置对api的代理:https://github.com/bbachi/angular-nodejs-docker-compose
在您的情况下,您的代理配置文件应类似于:
{
"/api": {
"target": "http://backend:8080",
"secure": false
}
}
顺便说一句,您实际上不需要指定网络,默认情况下,同一撰写文件中的所有服务都将通过自动为其设置的默认网络相互通信,因此您的撰写应该可以正常工作,如下所示:version: '3.3'
services:
frontend:
image: bloomingthebrand/developers:frontv0.0.12
ports:
- 80:80
depends_on:
- backend
backend:
image: bloomingthebrand/developers:backv0.0.4
关于docker - 连接两个docker-compose容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64306479/