Lorsque vous utilisez des réseaux personnalisés dans Docker comme
networks:
default:
external:
name: service-tier
Et essayez d'exécuter ça, je reçois l'erreur
ERREUR: le niveau de service réseau déclaré comme externe, mais introuvable. Veuillez créer le réseau manuellement à l'aide de
docker network create service-tier
et essayez à nouveau.
Est-il possible de créer des réseaux automatiquement avec docker-compose ou n'y a-t-il pas d'autre moyen que de les créer manuellement d'abord?
external
consiste à utiliser un réseau existant. Si vous voulez composer pour créer des réseaux, vous faites simplement:
networks:
network1:
network2:
.. pour instruire composer pour faire les réseaux. Ils seront nommés <compose-dir>-<network name>
Vérifiez la création à l'aide de docker network ls
.
Vous pouvez également remplacer le réseau par défaut ou spécifier plus de propriétés.
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1450
.. remplacera le paramètre réseau par défaut MTU à 1450 (pratique lorsque l'hôte a moins de 1500 mtu et que la découverte du chemin mtu ne fonctionne pas correctement). Il y a autres options de pilote de pont .
external
est plus logique lorsque vous souhaitez que les services dans deux configurations de composition se parlent ou que vous ayez un réseau créé manuellement.
Comme @ Grimmy l'indique correctement, Docker crée tous les réseaux mentionnés, donc ceux-ci peuvent être référencés plus tard en exécutant un autre fichier de composition.
Mais, le nom de réseau généré par défaut n'est ni pratique ni robuste. Cela pourrait s'avérer très long ou l'équipe docker
change d'avis sur la stratégie de nommage.
Mais depuis composer la version du fichier 3.5
(veux dire docker-compose
version 1.18.0
) on peut nommer le réseau à sa guise, donc la solution globale est encore plus robuste.
Veuillez consulter les extraits suivants montrant comment y parvenir:
Composez le fichier 1
version: '3.5'
services:
svc-name:
...
networks:
- specific-network-name
container_name: "exact-container-reference"
...
networks:
specific-network-name:
external: false
name: specific-network-name
Composez le fichier 2
version: '2'
services:
svc-using-svc-name:
...
networks:
- default
- specific-network-name
external_links:
- exact-container-reference
...
networks:
specific-network-name:
external: true