Docker - Exécuter Apache de l'hôte et des conteneur de différents sites web
Je veux utiliser Docker afin d'être en mesure d'exécuter une ancienne application qui nécessite PHP 5.3, tout en ayant mes autres sites sur mon serveur hôte, en cours d'exécution sur l'hôte Apache.
J'ai donc siteA.com, siteB.com, siteC.com en cours d'exécution sur l'hôte, à l'aide de l'hôte Apache /PHP /MySQL server, et j'ai siteZ.com installé dans un conteneur Docker, qui devrait être à l'aide du conteneur Apache /PHP, mais l'hôte du serveur MySQL.
Voici une représentation de l'architecture que je voudrais obtenir :
Mon problème est qu'il semble que je ne puisse pas exécuter Apache dans le conteneur, depuis que le port 80 est déjà utilisé sur l'ordinateur hôte.
Mon but serait que les personnes puissent avoir accès à siteA.com, siteB.com, siteC.com et siteZ.com sans avoir à spécifier un port différent pour l'un de ces sites web.
J'ai réussi à obtenir siteZ.com l'exécution en utilisant le port 8080, mais ce n'est évidemment pas une option.
Grâce
PS : Veuillez noter que je suis complètement nouveau pour Docker.
Edit : Vous pouvez trouver ma solution de travail ici. Grâce à VonC pour en me montrant le chemin à parcourir 🙂
Vous devez vous connecter pour publier un commentaire.
Grâce à VonC réponse j'ai réussi à le faire fonctionner mais j'ai un peu changé mon architecture, résultant en 3 conteneurs au lieu de seulement 1.
J'ai un conteneur pour chaque Apache /PHP version, et un conteneur avec Nginx en tant que reverse proxy. Je pense que vous pouvez facilement adapter cette pour installer Nginx sur l'hôte et modifier sa configuration pour correspondre à l'architecture que j'ai décrit dans ma question.
Remarque que, comme je suis nouveau sur menu fixe, et un noob sur Linux administration système, il y a probablement des erreurs et des choses qui ne font pas de sens dans les scripts suivants, mais il travaille pour moi. Hésitez pas à l'améliorer 🙂
Reverse Proxy Nginx image
Le Dockerfile :
Voici le référencés
proxy.conf
fichier :Et je l'exécute en utilisant le script bash suivant :
J'ai un
/home/antoineb/Docker/images/nginxproxy/virtualhosts
dossier sur mon hôte, qui contient les éléments suivantsdefault
fichier :Apache 2.2 + PHP 5.3 image
Dockerfile :
Je suis de le lancer à l'aide du script suivant :
Mes sites web sont stockés dans /home/site web.com/www, et mon apache hôtes virtuels sont stockés sur l'ordinateur hôte dans
/home/antoineb/Docker/images/apache22php53/virtualhosts
.Apache 2.4 + PHP 5.6.9 image
Dockerfile :
Mon script en cours :
Encore une fois, mes sites web sont stockés dans /home/site web.com/www, et mon apache hôtes virtuels sont stockés sur l'ordinateur hôte dans
/home/antoineb/Docker/images/apache24php56/virtualhosts
.Bien sûr, vous pouvez: dans un récipient, vous pouvez exécuter Apache sur n'importe quel port que vous voulez.
mais quand vous ne
docker
run
, puis vous devez carte ce port à conteneurs à un port hôte (qui ne sera pas 80, puisqu'il est déjà pris, mais par exemple 8080Qui est appelé reverse proxy, et vous pourriez exécuter sur le port 80 d'un NGiNX (dans un conteneur ou pas) qui serait alors reverse proxy à siteA, B ou C (chaque cours d'exécution sur un port différent, en contenant ou non).
Voir, par exemple,"Nginx reverse proxy avec plusieurs ssl domaine".
Votre principal d'Apache ne pas s'exécuter directement sur le port 80 plus (ou elle pourrait, si vous la mettez dans un récipient!)
L'objectif derrière tout mettre dans son propre conteneur est isolement.
Pas seulement des système de fichiers à l'isolement dans le chroot, ou la mémoire de l'isolement, mais aussi configuration isolation: dans un récipient, un Apache toujours exécuter (si vous voulez) dans 80/443, pas n'importe comment beaucoup de Apache conteneurs sont en cours d'exécution.
Vous venez de lancer avec le bon hôte mappage de port, mais à l'intérieur d'un conteneur, la config reste fixe et identique.
Vous pouvez utiliser en fonction de l'hôte de routage dans le panneau de la colle
https://github.com/muayyad-alsadi/docker-glue
c'est une lumière-poids démon qui génère
haproxy
modèles à la volée (vous pouvez définir nginx du modèle si vous le souhaitez) qui montre que l'étiquette du contenant comme cedans cette configuration la colle démon va générer haproxy config de sorte que le trafic à wp1.example.com va à wp1 conteneur