为什么我的容器不加入docker-compose中的现有网络?

问题描述 投票:1回答:2

我有一个简单的应用程序,我试图连接到现有的现有网络,但是当我执行docker-compose up时,它只是在不加入现有网络的情况下为自己创建一个新网络。我要加入的现有网络用于traefik,这称为代理。我在traefik后面运行的所有其他服务都工作正常。我必须手动将mynewapp添加到代理网络中才能正常工作。我所有其他服务的组合文件也都在单独的文件夹中解耦,所以我认为并非如此。

我尝试将外部和内部值定义为true和false,但它仍会创建自己的网络。如果我与代理网络一起定义了默认网络,则它将仅创建两个名为mynodeapp_default和mynodeapp_proxy的新网络。如果我运行docker network inspect proxy,则看不到mynewapp(但是我看到了所有其他正在运行的服务)。

我的docker network list的输出是

62eba8d7e127        proxy                 bridge              local
a50cdb97b743        testapp_proxy         bridge              local

我在这里做错了什么?

version: '3'

services: 
  mynodeapp:
    container_name: mynodeapp
    build: .
    volumes:
      - ./:/app/
    networks: 
      - proxy
    labels: 
      - traefik.enable=true
      - traefik.network=proxy

networks: 
  proxy:
docker docker-compose
2个回答
2
投票

如果您希望容器加入现有网络,则需要使用external option

version: '3'

services: 
  mynodeapp:
    container_name: mynodeapp
    build: .
    volumes:
      - ./:/app/
    networks: 
      - proxy
    labels: 
      - traefik.enable=true
      - traefik.network=proxy

networks: 
  proxy:
    external: true

0
投票

您也可以指定如下,

version: "3"

services: 
  mynodeapp:
    container_name: mynodeapp
    build: .
    volumes:
      - ./:/app/
    networks: 
      - proxy
    labels: 
      - traefik.enable=true
      - traefik.network=proxy

networks:
  outside:
    external: true

您还可以在撰写文件中与用于引用网络的名称分开指定网络的名称:

networks:
  outside:
    external:
      name: actual-name-of-network

版本2的docker-compose文件不支持。请改用network_mode。

名称以2.1版文件格式添加]

为此网络设置自定义名称。

版本:“ 2.4”网络:网络1:名称:my-app-net

© www.soinside.com 2019 - 2024. All rights reserved.