J'ai essayé de configurer un conteneur nginx-proxy pour accéder à mes autres conteneurs via des sous-domaines sur le port 80 au lieu de ports spéciaux. Comme vous pouvez le deviner, je ne pouvais pas le faire fonctionner.
Je suis un peu nouveau au docker lui-même et j'ai trouvé que c'était plus confortable pour moi d'écrire docker-compose.yml
fichiers pour que je n’aie pas à écrire constamment docker run ...
commandes. Je pensais qu'il n'y avait aucune différence dans la manière de démarrer les conteneurs, que ce soit avec docker
ou docker-compose
. Cependant, une différence que j’ai remarquée est que démarrer le conteneur avec docker
ne crée pas de nouveaux réseaux, mais avec docker-compose
il y aura un xxx_default
réseau ensuite.
J'ai lu que les conteneurs sur différents réseaux ne peuvent pas accéder les uns aux autres et peut-être que cela pourrait être la raison pour laquelle le proxy nginx ne transfère pas les demandes aux autres conteneurs. Cependant, je n’ai pas trouvé de moyen de configurer mon docker-compose.yml
fichier pour ne pas créer de nouveaux réseaux, mais rejoindre le réseau de pont par défaut comme docker run
Est-ce que.
J'ai essayé ce qui suit, mais il en est résulté une erreur disant que je ne peux pas rejoindre les réseaux du système comme ceci:
networks:
default:
external:
name: bridge
J'ai aussi essayé network_mode: bridge
, mais cela n'a pas semblé faire la différence.
Comment dois-je écrire le docker-compose.yml
fichier pour ne pas créer de nouveau réseau, ou est-ce impossible?
Question bonus: y at-il d’autres différences entre docker
et docker-compose
que je devrais savoir?
Ajouter network_mode: bridge
à chaque service de votre docker-compose.yml
arrêtera de composer pour créer un réseau.
Si aucun service n'est configuré avec ce pont (ou hôte), un réseau sera créé.
Testé et confirmé avec:
version: "2.1"
services:
app:
image: ubuntu:latest
network_mode: bridge