多个docker-compose项目之间的通信

发布于 2021-02-01 13:09:37

docker-compose.yml在两个不同的文件夹中有两个单独的文件:

  • ~/front/docker-compose.yml
  • ~/api/docker-compose.yml

如何确保in中的容器front可以将请求发送到in中的容器api

我知道--default-gateway可以docker run为单个容器设置选项,以便可以为该容器分配特定的IP地址,但是使用时似乎没有此选项docker-compose

目前,我最终做了一个,docker inspect my_api_container_id然后查看输出中的网关。它可以工作,但问题是该IP是随机分配的,因此我不能依靠它。

因此,此问题的另一种形式可能是:

  • 我可以使用docker-compose将固定IP地址分配给特定容器吗?

但最后我要照顾的是:

  • 两个不同的docker-compose项目如何相互通信?
关注者
0
被浏览
147
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    您只需要确保要互相交谈的容器在同一网络上即可。网络是一流的docker构造,并不特定于组合。

    # front/docker-compose.yml
    version: '2'
    services:
      front:
        ...
        networks:
          - some-net
    networks:
      some-net:
        driver: bridge
    

    # api/docker-compose.yml
    version: '2'
    services:
      api:
        ...
        networks:
          - front_some-net
    networks:
      front_some-net:
        external: true
    

    注意:根据“项目名称”为您的应用程序网络指定名称,该名称基于其所在目录的名称,在这种情况下front_,添加了前缀

    然后,他们可以使用服务名称互相交谈。从front您可以做到ping api,反之亦然。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看