Je gère des serveurs sur lesquels les utilisateurs ont leurs propres sites Web accessibles par FTP (comme une société d'hébergement) et au lieu de travailler sur l'isolement des processus de pile LAMP, je me demandais s'il était possible d'implémenter Docker et d'utiliser des images par site Web.
D'après ce que je comprends, vous pouvez exposer l'instance Docker via leurs ports, donc si vous exécutez deux instances Docker sur le même serveur, vous devrez exposer deux ports différents.
Mais est-il possible d'exporter non pas des ports, mais le nom du serveur, comme:
- www.somewebsite.com: instance Docker 1
- www.otherwebsite.com: Docker instance 2
- www.etc.com: instance Docker ...
Et cela, sur le même serveur.
J'ai pensé à installer uniquement Apache sur le serveur, ce qui redirigerait la demande vers l'instance Docker dédiée en fonction du nom du serveur, mais ensuite je devrais installer Apache (à nouveau!) Et MySQL sur toutes les instances Docker.
Est-ce possible et en plus, est-ce intéressant en terme de performance (ou pas du tout)?
Merci de votre aide.
Réponses:
Oui c'est possible. Ce que vous devez faire, c'est fournir plusieurs 80 ports. un pour chaque URL. Vous pouvez le faire en utilisant, par exemple, l'hôte virtuel d'Apache exécuté sur le serveur hôte Docker.
Le fichier de configuration Apache ressemblera à ceci:
la source
ProxyPreserveHost On
, donc vous ne vous retrouvez pas avec beaucoup de liens vers local.hostname.ofDockerHost: 12345 insite votre site web. Voici plus d'informations qui m'ont été utiles: digitalocean.com/community/tutorials/…C'est possible. Vous pouvez utiliser apache (ou mieux encore, haproxy, nginx ou vernis, qui peut être plus efficace qu'apache pour cette tâche de redirection uniquement) sur le serveur principal, pour rediriger vers les ports apache de chaque conteneur.
Mais, selon les sites que vous y exécutez (et leurs configurations apache), cela peut nécessiter beaucoup plus de mémoire que d'utiliser un seul apache central avec des hôtes virtuels, surtout si vous avez des modules (par exemple php) qui nécessitent beaucoup de RAM.
la source
Je sais que cela a déjà été répondu, mais je voulais aller plus loin et vous montrer un exemple de la façon dont cela pourrait être fait, pour fournir une réponse plus complète.
Veuillez voir mon image docker ici avec des instructions sur la façon de l'utiliser, cela vous montrera comment configurer deux sites https://hub.docker.com/r/vect0r/httpd-proxy/
Comme l'a dit jihun, vous devrez vous assurer que votre configuration de vhost est définie. Mon exemple utilise le port 80 pour afficher un site de test example.com et 81 pour afficher le site de test example2.com. Il est également important de noter que vous devrez spécifier votre contenu et exposer les ports requis dans votre Dockerfile, comme tel;
J'espère que cela explique un peu plus le processus. N'hésitez pas à me poser d'autres questions à ce sujet, heureux de vous aider.
Cordialement,
V
la source
Dans mon cas, j'avais besoin d'ajouter SSLProxyEngine On , ProxyPreserveHost On et RequestHeader set Front-End-Https "On" à mon fichier vhost apache 2.4, parce que je voulais activer SSL sur le conteneur Docker. À propos de local.hostname.ofDockerHost , dans mon cas, le nom du serveur hôte exécutant le conteneur Docker était lucas , et le port mappé au port 443 du conteneur Docker était 1443 (car le port 443 était déjà utilisé par apache dans l'hôte). serveur), de sorte que cette ligne se soit terminée de cette façon https: // lucas: 1443 /
Ceci est la configuration finale, et cela fonctionne très bien!
Enfin, dans le conteneur Docker, je devais configurer des en-têtes SSL proxy. Dans mon cas, le conteneur exécutait nginx et quelque chose appelé omnibus pour configurer des applications ruby. Je pense que cela peut également être configuré dans un fichier de configuration nginx. Je vais l'écrire comme c'est le cas au cas où quelqu'un trouverait cela utile
Guide complet pour apache, ISP Config, serveur Ubuntu 16.04 ici https://www.howtoforge.com/community/threads/subdomain-or-subfolder-route-requests-to-running-docker-image.73845/#post-347744
la source