Em https://docs.docker.com/compose/compose-file/#networks, as redes são especificadas como:
networks:
- some-network
- other-network
Usando docker-compose version 1.6.2, build 4d72027
e um arquivo da versão 2, recebo este erro:
ERROR: In file './docker-compose.yml', network must be a mapping, not an array.
A sintaxe correta parece ser:
networks:
some-network:
other-network:
É confuso, mas existem duas chaves networks
:
networks
no nível superior do arquivo Compose. Deve ser sempre um mapeamento.networks
dentro de uma definição de serviço. Isso pode ser um mapeamento ou uma matriz.Aqui está um exemplo:
version: "2"
services:
web:
build: .
networks:
- foo
networks:
foo:
sim, parece que você está certo. obrigado mesmo assim.
Obrigado Hendrik-H você resolveu meu problema. Eles realmente deveriam documentar isso melhor. Eu tinha várias redes definidas com um endereço IP e continuava me dando o erro.
Definição original
redes:
- rcon01:
ipv4_address: 172.40.1.2
- rnet50
Deu:
ERRO: o arquivo Compose './docker-compose.yaml' é inválido porque:
services.r3.networks contém {"rcon01": {"ipv4_address": "172.40.1.2"}}, que é um tipo inválido, deve ser uma string
Nova definição funciona:
redes:
rcon01:
ipv4_address: 172.40.1.2
rnet50:
Comentários muito úteis
É confuso, mas existem duas chaves
networks
:networks
no nível superior do arquivo Compose. Deve ser sempre um mapeamento.networks
dentro de uma definição de serviço. Isso pode ser um mapeamento ou uma matriz.Aqui está um exemplo: