无法在docker-compose v1.24.1的docker-compose.yml文件版本3中使用“ network_mode”

时间:2020-05-17 14:32:57

标签: docker docker-compose

当我尝试使用“ network_mode”对docker-compose.yml文件进行docker-compose时,出现以下错误:

错误:撰写文件'./docker-compose.yml'无效,因为: services.combined.network_mode包含无效的类型,应为 字符串

我的docker-compose.yml文件:

version: '3'
services:
    dbrs:
        hostname: localhost
        build:
            context: .
            dockerfile: ./docker/dbrs/Dockerfile
        volumes:
            - dbdata:/data/db
        ports:
            - "27017:27017"
            - "27018:27018"
            - "27019:27019"
        networks:
            - app-network

    combined:
        build:
            context: .
            dockerfile: ./docker/combined/Dockerfile
        env_file: .env
        ipc: host
        volumes:
            - .:/home/node/app
            - ./cypress:/usr/src/app/cypress
            - node_modules:/home/node/app/node_modules
            - /tmp/.X11-unix:/tmp/.X11-unix
            - /dev/shm:/dev/shm
        ports:
            - "5000:5000"
            - "8080:8080"
        networks:
            - app-network
        network_mode:
            - "service:dbrs"
        depends_on:
            - dbrs

networks:
    app-network:
        driver: bridge

volumes:
    dbdata:
    node_modules:

据我所知,network_mode应该适用于the docs的第3版。我的docker-compose版本是1.24.1,内部版本4667896。

还有其他原因导致我无法在docker-compose.yml文件中使用“ network_mode”吗?

1 个答案:

答案 0 :(得分:1)

当你说:

network_mode:
  - "service:dbrs"

新行,连字符声明YAML列表。如错误消息所示,它必须是单个字符串,而不是列表。该值应该在同一行。

network_mode: "service:dbrs"

(这样直接连接到另一个服务的网络堆栈是非常不寻常的。如果需要与另一个容器通信,则可以使用其Compose服务名称和内部端口号dbrs:27017。{{3} }有更多详细信息。)