J’ai deux applications de composition de docker:
Je veux les exécuter tous les deux sur la même machine hôte et placer un proxy de conteneur nginx pour acheminer les demandes entrantes vers les services corrects de chacune des applications docker-compose.
Je pense que je dois avoir un conteneur nginx unique qui s’exécute séparément des deux applications composées dans Docker. J’ai déjà utilisé nginx-proxy , mais mon routage est devenu plus complexe, alors je veux lancer ma propre instance nginx maintenant.
host not found in upstream "MY_CONTAINER_HOST_NAME"
, docker run
le conteneur nginx que host not found in upstream "MY_CONTAINER_HOST_NAME"
: nginx-proxy devrait être suffisant, à condition qu’il prenne en charge un réseau attaché à un docker swarm ( problème 520 , toujours en attente)
Vous pouvez également considérer vfarcic/docker-flow-proxy
, un moyen simple de reconfigurer le proxy chaque fois qu’un nouveau service est déployé ou lorsqu’un service est mis à l’échelle.
Voir ” Intégration du proxy avec Docker Swarm (série Tour Around Docker 1.12) ” pour un exemple concret.
Je peux penser à 2 options pour cela:
Premier:
Exécutez les applications et nginx dans le même réseau défini par l’utilisateur docker. Pour ce faire, vous devez d’abord créer un réseau défini par l’utilisateur:
docker network create appnet
Ensuite, changez vos fichiers Docker pour utiliser le réseau Appnet comme externe (les réseaux externes ne créeront pas de réseau et utiliseront les réseaux existants)
Seconde:
Créez 2 réseaux définis par l’utilisateur, nommés appnet1 et appnet2, connectez a.com à appnet1 et b.com à appnet2 marqué comme réseau externe dans docker-compose. Ensuite, ouvrez le nginx et attachez-le à la fois à appnet1 et à appnet2.
Quand je fixe le dock, lancez le conteneur nginx que j’obtiens:
Remarque: les réseaux définis par l’utilisateur fournissent un DNS interne. Vous pouvez donc appeler des conteneurs sur le même réseau par nom de conteneur.
Exemple de réseau externe:
Si vous souhaitez que vos conteneurs rejoignent un réseau préexistant, utilisez l’option externe:
networks: default: external: name: my-pre-existing-network
Au lieu d’essayer de créer un réseau appelé [projectname] _default, Compose recherchera un réseau appelé my-pre-exist-network et y connectera les conteneurs de votre application.