连接两个docker-compose容器

问题描述

我有一个开放端口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进行角度和反应开发时,通常需要对api调用进行角度/反应代理,默认情况下,这些框架不会执行此操作,并且浏览器将尝试进行这些调用,这就是发生在你的情况。看一下这个有角度的示例,以及它如何在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
,

我可能是错的,但是您是否尝试过将“ mynet”替换为“ localhost”