На https://docs.docker.com/compose/compose-file/#networks сети указаны как:
networks:
- some-network
- other-network
Используя docker-compose version 1.6.2, build 4d72027
и файл версии 2, я получаю эту ошибку:
ERROR: In file './docker-compose.yml', network must be a mapping, not an array.
Правильный синтаксис выглядит так:
networks:
some-network:
other-network:
Это сбивает с толку, но есть два разных ключа networks
:
networks
на верхнем уровне файла Compose. Это всегда должно быть отображение.networks
внутри определения службы. Это может быть отображение или массив.Вот пример:
version: "2"
services:
web:
build: .
networks:
- foo
networks:
foo:
да, похоже, вы правы. Спасибо, в любом случае.
Спасибо, Hendrik-H, вы решили мою проблему. Они действительно должны лучше документировать это. У меня было несколько сетей, определенных с IP-адресом, и он продолжал выдавать мне ошибку.
Исходное определение
сети:
- rcon01:
ipv4_address: 172.40.1.2
- rnet50
Отдал:
ОШИБКА: файл Compose './docker-compose.yaml' недействителен, потому что:
services.r3.networks содержит {"rcon01": {"ipv4_address": "172.40.1.2"}}, который является недопустимым типом, это должна быть строка
Новое определение работает:
сети:
rcon01:
ipv4_address: 172.40.1.2
rnet50:
Самый полезный комментарий
Это сбивает с толку, но есть два разных ключа
networks
:networks
на верхнем уровне файла Compose. Это всегда должно быть отображение.networks
внутри определения службы. Это может быть отображение или массив.Вот пример: