首页 > 解决方案 > 将网络分配给一项服务是否会将其与 docker-compose 中的其他服务隔离开来?

问题描述

我有许多服务正在运行并共享默认网络。

现在我想创建将与默认网络隔离的 integrationTest 容器,因此我也可以测试 haProxy。

  integration-test:
    image: image:some-image:tag
    container_name: integration-test
    command: node_modules/.bin/jest integration/
    networks:
      - frontend
    depends_on:
      - mongodb

将网络分配给该服务是否足够,从而将其与其他服务隔离开来,还是我需要为所有其他服务分配另一个网络?

标签: dockerdocker-compose

解决方案


TLDR;是的,这会将集成测试与 docker-compose 文件中的任何其他服务分开。

更长的版本...

默认情况下,docker-compose 为您的 docker-compose.yml 文件创建一个桥接网络project_default(也称为默认网络)。

以下两个服务定义完全相同。

app:
  build: .
  networks:
    - default

app:
  build: .

如果您希望您的服务连接到其他网络,那么您必须列出这两个default网络以及其他网络。

app:
  build: .
  networks:
    - default
    - frontend

如果您希望您的服务仅在其他服务上,那么只需default从网络中删除。

app:
  build: .
  networks:
    - frontend

如果您对哪些容器连接到哪些网络有疑问,您可以随时检查容器或网络。例如。docker inspect frontend或者docker inspect project_app_1


推荐阅读