Docker - Apache Ausführen auf dem host und container für die verschiedenen websites
Will ich mit Docker, um in der Lage zu sein eine alte Anwendung, die erfordert, dass PHP 5.3, während immer noch mit meinen anderen Webseiten auf meinem host-server, auf dem host laufen, der Apache.
Also ich habe siteA.com, siteB.com, siteC.com auf dem host ausgeführt wird, mit Hilfe der host-Apache /PHP /MySQL server, und ich habe siteZ.com installiert ist in einem Docker-container, die mithilfe des Containers Apache /PHP den MySQL-host-server.
Hier ist eine Darstellung der Architektur möchte ich erhalten :
Mein Problem ist, dass es scheint, wie ich kann nicht laufen Apache im container, da der port 80 ist bereits auf dem host.
Mein Ziel wäre, dass die Menschen zugreifen können siteA.com, siteB.com, siteC.com und siteZ.com ohne geben Sie einen anderen port für jede dieser websites.
Schaffte ich es, siteZ.com läuft über port 8080, aber es ist offensichtlich keine option.
Dank
PS : Bitte beachten Sie, dass ich bin komplett neu auf Docker.
Edit : Du kannst meine funktionierende Lösung hier. Dank VonC für zeigt mir den Weg zu gehen 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dank VonC Antwort ich es geschafft, es funktioniert, aber ich leicht verändert meinem Architektur, was in 3 Containern anstelle von nur 1.
Habe ich einen container für die einzelnen Apache - /PHP-version, und einem Behälter mit Nginx als reverse-proxy. Ich denke, Sie können leicht anpassen, dieses zu installieren Nginx auf dem host und ändern Sie die Konfiguration entsprechend der Architektur wie ich Sie in meiner Frage.
Beachten Sie, dass ich bin neu in Docker, und ein noob in Bezug auf Linux-system-administration, gibt es wahrscheinlich einige Fehler und Dinge, die keinen Sinn in den folgenden scripts, aber es ist für mich arbeiten. Fühlen Sie sich frei, es zu verbessern 🙂
Nginx Reverse-Proxy-Bild
Dem Dockerfile :
Hier ist das referenzierte
proxy.conf
Datei :Und ich betreibe es mit den folgenden bash-Skript :
Ich habe eine
/home/antoineb/Docker/images/nginxproxy/virtualhosts
Ordner auf meinem host enthält die folgendendefault
Datei :Apache 2.2 + PHP 5.3 Bild
Dockerfile :
Starte ich es mit dem folgenden Skript :
Meine websites sind gespeichert in /home/website.com/www, und mein apache-virtualhosts gespeichert sind, auf dem host in
/home/antoineb/Docker/images/apache22php53/virtualhosts
.Apache 2.4 + PHP 5.6.9 Bild
Dockerfile :
Mein Skript ausführen :
Wieder, meine websites werden gespeichert in /home/website.com/www, und mein apache-virtualhosts gespeichert sind, auf dem host in
/home/antoineb/Docker/images/apache24php56/virtualhosts
.Sicher, Sie können: in einem container können Sie Apache auf einem beliebigen port, den Sie wollen.
aber wenn Sie es tun
docker
run
, dann müssen Sie Karte dieser container-Anschluss an einen host-port (nicht 80 sein, da ist es schon genommen, aber zum Beispiel 8080Ist als reverse proxy, und Sie konnte laufen auf port 80 ein NGiNX (in einem container oder nicht) das wäre dann ein reverse-proxy zurück zu siteA, B oder C (jeweils mit unterschiedlichen port, im container oder nicht).
Siehe zum Beispiel "Nginx-reverse-proxy mit mehreren ssl-domain".
Ihre wichtigsten Apache-würde nicht direkt auf port 80 mehr (oder könnte es, wenn Sie es in einem Behälter!)
Das Ziel hinter der er alles in seine eigenen container isolation.
Nicht nur Dateisystem-isolation mit chroot, oder die Erinnerung allein, sondern auch Konfiguration isolation: in einem container, Apache läuft immer (wenn Sie wollen) in 80/443, egal, wie viele Apache-Container ausgeführt werden.
Sie einfach starten Sie mit der richtigen host-port-mapping, aber in einem container, die config bleibt unverändert und identisch.
Können Sie host-based routing im Andockfenster Kleber
https://github.com/muayyad-alsadi/docker-glue
es ist eine light-weight daemon erzeugt
haproxy
templates on-the-fly (Sie können festlegen, nginx Vorlage, wenn Sie möchten), dass die Uhr container labels wie diesin diesem setup der Kleber daemon generiert haproxy-config, so dass der Verkehr zu wp1.example.com geht wp1 container