En https://docs.docker.com/compose/compose-file/#networks las redes se especifican como:
networks:
- some-network
- other-network
Usando docker-compose version 1.6.2, build 4d72027
y un archivo de la versión 2 obtengo este error:
ERROR: In file './docker-compose.yml', network must be a mapping, not an array.
La sintaxis correcta parece ser:
networks:
some-network:
other-network:
Es confuso, pero hay dos claves networks
:
networks
en el nivel superior del archivo de composición. Esto siempre debe ser un mapeo.networks
dentro de una definición de servicio. Puede ser un mapeo o una matriz.He aquí un ejemplo:
version: "2"
services:
web:
build: .
networks:
- foo
networks:
foo:
sí, parece que tienes razón. gracias de cualquier manera.
Gracias Hendrik-H, resolvió mi problema. Realmente deberían documentar eso mejor. Tenía varias redes definidas con una dirección IP y seguía dándome el error.
Definición original
redes:
- rcon01:
dirección_ipv4: 172.40.1.2
- rnet50
Dio:
ERROR: El archivo de redacción './docker-compose.yaml' no es válido porque:
services.r3.networks contiene {"rcon01": {"ipv4_address": "172.40.1.2"}}, que es un tipo no válido, debería ser una cadena
Obras de nueva definición:
redes:
rcon01:
dirección_ipv4: 172.40.1.2
rnet50:
Comentario más útil
Es confuso, pero hay dos claves
networks
:networks
en el nivel superior del archivo de composición. Esto siempre debe ser un mapeo.networks
dentro de una definición de servicio. Puede ser un mapeo o una matriz.He aquí un ejemplo: