web-dev-qa-db-fra.com

Acheminer le trafic vers un conteneur Docker basé sur un sous-domaine

J'ai un DNS générique pointé vers mon serveur, par exemple * .domain.com

Je voudrais acheminer chaque sous-domaine vers son propre conteneur Docker. Ainsi, box1.domain.com va dans le conteneur Docker approprié. Cela devrait fonctionner pour tout trafic principalement HTTP et SSH.

Ou peut-être que le port peut faire partie du sous-domaine, par exemple 80.box1.domain.com. J'aurai beaucoup de conteneurs Docker donc la solution devrait être dynamique et non codée en dur pour chaque conteneur.

20
Adam Jimenez

Je suis allé avec interlock pour acheminer le trafic http à l'aide du plugin nginx . J'ai décidé d'utiliser un port aléatoire pour chaque connexion SSH car je ne pouvais pas le faire fonctionner en utilisant le sous-domaine seul.

6
Adam Jimenez

Une autre solution serait d'utiliser https://github.com/jwilder/nginx-proxy .

Cet outil transmet automatiquement les requêtes au conteneur approprié (basé sur le sous-domaine via la variable d'environnement du conteneur VIRTUAL_Host).

Par exemple, si vous souhaitez rediriger box1.domain.com vers un conteneur, définissez simplement le VIRTUAL_Host variable d'environnement de conteneur à " box1.domain.com".

Voici un tutoriel détaillé que j'ai écrit à ce sujet: http://blog.florianlopes.io/Host-multiple-websites-on-single-Host-docker .

3
Florian Lopes

ma réponse peut arriver tard mais quand vous utilisez docker vous n'avez pas vraiment besoin de ssh pour vous connecter à vos conteneurs. avec le docker exec, vous pouvez exécuter la commande Shell directement dans votre conteneur en cours d'exécution.

voici mon conseil, utilisez le conteneur proxy nginx répertorié au début pour configurer les sous-domaines. et exécutez portainer sur votre hôte afin d'avoir un aperçu visuel de vos conteneurs, images, journaux et même exécuter des commandes dans tout cela via l'interface utilisateur de portainer.

1
justice

La solution la plus simple serait d'utiliser la méthode Apache mod_rewrite RewriteMap. Il est très performant lorsqu'il est utilisé contre un fichier texte, mais il peut appeler un script si vous le souhaitez. Il y a ne autre réponse StackOverflow qui couvre assez bien la variante de script.

Si vous voulez éviter Apache, les bonnes personnes de dotCloud ont créé Hipache pour faire le routage de leurs services PaaS. Ils ont même documenté les différentes choses ils ont essayé avant de construire leur propre solution. J'ai trouvé une référence à tsuru.io utilisant hipache exactement pour le routage vers les conteneurs docker, ce qui le valide définitivement à cet effet.

0
Robert Wohleb