Vielleicht ist einer der Hauptgründe, warum ich Docker mag, dass es nicht mehr erforderlich ist, verschiedene Dienste auf einem Computer zu installieren. Dazu gehören der Apache- oder Nginx-Webserver selbst, Datenbanken und andere Komponenten der Anwendungsinfrastruktur. Die gesamte Infrastruktur ist in der Konfigurationsdatei docker-compose.yml registriert und wird mit einem einzigen Befehl zusammen mit Ihrer Anwendung gestartet. Alles, was ein Entwickler, der mit einem Docker arbeitet, benötigt, ist im Wesentlichen ein Docker selbst und eine bevorzugte Entwicklungsumgebung und ALLES!
Um die weitere Erzählung zu vervollständigen, müssen Sie noch kurz erläutern, was Docker und seine Grundkonzepte sind.
Docker sollte also als eine Art Virtualisierungs- und Containerisierungssystem betrachtet werden.
Eines der Grundkonzepte von Docker ist ein Bild. Ein Bild kann mit einer Datei (möglicherweise sogar einer ausführbaren Programmdatei) verglichen werden, die einige Informationen enthält. Docker kann das Image starten. Ein laufendes Image wird als Container bezeichnet. Es können mehrere Container desselben Images gestartet werden.
Was ist also im Bild enthalten?
Kann ein Image eines Betriebssystems sein. Zum Beispiel das Bild von Ubuntu. Es kann ein Bild mit einer Datenbank, einem Webserver und PHP und mit fast allem geben. Dieses Wissen zu beginnen wird uns ausreichen.
Es wird davon ausgegangen, dass auf dem Reader Docker und Docker-Compose installiert sind.
Wir beginnen, unsere Umgebung von einfach bis komplex bereitzustellen.
Lektion Nummer 1. Nginx-Installation
Versuchen wir zunächst, nur Nginx zu installieren. Erstellen Sie docker-compose.yml mit folgendem Inhalt:
version: '3.0' services: nginx: image: nginx ports: - 80:80
Führen Sie als Nächstes den Befehl docker-compose up -d aus. Als Antwort sollte Folgendes angezeigt werden:
Creating network "lesson1_default" with the default driver Creating lesson1_nginx_1 ... done
Wir geben
http: // localhost / in die Adressleiste des Browsers ein und die Begrüßung „Willkommen bei Nginx!“ Sollte für unsere Augen sichtbar sein. Dann sind Sie auf dem richtigen Weg.
Was ist hier los?
Um die Struktur der Erstellungsdatei zu verstehen, empfehle ich, auf die
offizielle Dokumentation zu verweisen, obwohl dies die beste Informationsquelle auf Englisch ist. In der Dokumentation werden alle möglichen Optionen beschrieben, die verwendet werden können.
Lassen Sie uns die präsentierte Datei analysieren:
- version - Zu Beginn wird die Version der Erstellungsdatei deklariert. Anstelle von 3.0 können Sie auch 2.0 angeben. Weniger wird nicht mehr unterstützt. Welche Optionen in der Erstellungsdatei zur Verwendung verfügbar sind, hängt von der Version ab.
- Dienstleistungen - Dienstankündigung
- nginx - der Name unseres Dienstes wird nach eigenem Ermessen festgelegt. In diesem Beispiel stimmt der Name des Bildes überein.
- image: nginx - der Name des zu verwendenden Bildes.
- ports - Die Direktive deklariert die Portweiterleitung. 8080: 80 - Dieser Eintrag bedeutet, dass der offene Port 80 des Containers dem Port 8080 auf dem Hostcomputer entspricht, auf dem der Docker ausgeführt wird. Im Beispiel aus der Datei ist Port 80 im Container mit Port 80 auf Ihrem Computer verbunden.
Wir werden die Bilddeklaration, die image: nginx-Direktive, genauer untersuchen.
Das Haupt-Repository aller Bilder ist der
Docker Hub. Dort gibt es viele verschiedene vorgefertigte Bilder (Sie können Ihre eigenen sammeln, aber dazu später mehr). Das deklarierte
Nginx-Bild ist eines davon.
Wie für die "Vorwärts" -Ports. Wenn Sie wie im obigen Beispiel eine 80: 80-Übereinstimmung angeben, ist nginx bei localhost: 80 oder nur bei localhost verfügbar. Wenn Port 80 bereits belegt ist, können Sie 8080: 80 angeben. Dann ist die Site unter localhost verfügbar: 8080. Wenn Sie diese Port-Direktive vollständig vergessen haben, ist der Port nur innerhalb des Containers verfügbar, und auf nginx kann über den Browser nicht mehr zugegriffen werden.
Der Container läuft. Und wie soll man eigentlich mit ihm arbeiten?
Bei der Installation eines Webservers wird davon ausgegangen, dass wir ihn zum Empfangen und Anzeigen von HTML-Seiten der Site verwenden möchten. Es gibt eine Frage. Wie kann ich HTML-Dateien in einen Container übertragen? Bände helfen uns dabei
Bände
Bringen wir unsere docker-compose.yml in die folgende Form:
version: '3.0' services: nginx: image: nginx ports: - 80:80 volumes: - ./html:/usr/share/nginx/html
Die Datenträger-Direktive wurde aus einer neuen Direktive erstellt, die besagt, dass der lokale Ordner ./html im Container unter der Adresse / usr / share / nginx / html bereitgestellt wird.
Beim Mounten wird der Ordner an der angegebenen Adresse im Container durch den Ordner vom lokalen Computer ersetzt.
Damit es funktioniert, erstellen Sie den HTML-Ordner auf derselben Ebene wie die Datei docker-compose.yml und fügen Sie die Datei index.html mit freiem Text hinzu. Zum Beispiel Hallo von Docker!
Und wir erstellen den Container mit demselben Docker-Compose-Up-D-Befehl neu
Docker erstellt den Container neu.
Recreating lesson1_nginx_1 ... done
Überprüfen Sie das Ergebnis im Browser. Und wir sehen: Hallo von Docker! Es hat alles geklappt.
Es ist wichtig zu beachten, dass der bereitgestellte Ordner für Änderungen in Echtzeit verfügbar ist. Das heißt, Wenn wir den Text in der Datei index.html ändern oder dem Ordner eine neue Datei hinzufügen, sind alle diese Änderungen sofort im Container verfügbar. Mit dieser wichtigen Funktion können Sie die Entwicklung über den Docker durchführen. Wir nehmen auf unserem Computer Änderungen an bereitgestellten Dateien und Ordnern vor, die sofort im Docker-Container angezeigt werden.
Teil 2 - Nginx + PHP + MySql + phpMyAdmin