连接两个 docker-compose 容器

Connecting two docker-compose containers

我有一个 Ubuntu 端口 80 打开的远程服务器。端口 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

我可能是错的,但你试过用“localhost”替换“mynet”吗

当使用 compose 进行 angular 和 React 开发时,您通常需要 angular/react 代理您的 api 调用,默认情况下这些框架不会这样做,您的浏览器会尝试拨打这些电话,这就是您的情况。看看这个 angular 示例以及它如何在 app-ui/proxy.conf.json 中设置 api 的代理:https://github.com/bbachi/angular-nodejs-docker-compose

在你的情况下,你的代理 conf 应该是这样的:

{
  "/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