Aus dem Kurs: Docker lernen
Beispiel: Eine Webanwendung mit Docker entwickeln – Tutorial zu Docker
Aus dem Kurs: Docker lernen
Beispiel: Eine Webanwendung mit Docker entwickeln
Jetzt möchte ich mal ein kleines Beispiel Ihnen zeigen, eine Web-Anwendung mit Docker. Das bedeutet, wir werden einen Apache-Webserver starten, da wird PHP installiert sein, sodass wir uns dann hier z.B. den Inhalt der Datei info.php anzeigen lassen können. Also, eine kleine Mini-Web-Applikation, die ja normalerweise, oder nicht nur normalerweise, sondern immer auch die Voraussetzung hat, dass ich PHP installiert habe, bspw. auch einen Webserver, wenn ich es mir über den Browser anzeigen lassen möchte. Und genau das kann Ihnen Docker jetzt alles geben. Sie müssen also nicht mehr Apache selber installieren, Sie müssen nicht PHP installieren oder eine XAMPP- oder LAMP-Umgebung, sondern das macht eben Docker. Dazu gehe ich jetzt mal in die README.md-Datei und zeige mir diese Datei hier mal in der formatierten Version an. Und hier bei Web-Applikationen sehe ich diesen einen Befehl, den brauche ich. Und dazu gehe ich jetzt ins Terminal, ich habe hier das WSL gestartet, also Windows Subsystem für Linux – brauchen Sie nicht unbedingt, wenn Sie direkt auf Linux arbeiten oder auf einem Mac. Und jetzt schauen wir uns mal diesen Befehl genauer an. Also "docker" ist natürlich immer das, was ich am Anfang schreibe, wenn ich irgendwas mit Docker zu tun habe. Und "run" heißt, ich möchte etwas ausführen, ich möchte etwas zum Laufen bringen, einen Container, den werde ich hier später genauer nennen. Und jetzt habe ich hier noch verschiedene sog. Flags, d.h. verschiedene Einstellungen. Also dieses -d steht für den Detached Mode. Das bedeutet, wenn ich den Befehl ausführe, wird mir danach meine Kommandozeile auch wieder freigegeben und ich kann weitere Befehle auf meinem Kommandozeilen-Interface eingeben. Dann habe ich hier das Flag -p, das sind die Ports. Und zwar brauche ich zwei Ports. Intern hört der Apache ja standardmäßig auf dem Port 80, aber extern kann ich den Port ändern. Und da habe ich hier bspw. die freie Wahl und sage, ich möchte später auf "localhost:8080" hören, d.h., das ist die Adresse, mit der ich später mir die Web-Anwendung anschaue. Intern ist es aber immer die 80, weil der Apache auf der 80 hört. Dann muss ich noch ein Volume angeben. Volume ist das Laufwerk, von wo aus der Apache sich seine Dateien holt, und das gebe ich mit einem -v zunächst mal an und dann ein Dollarzeichen und dann geschweifte Klammern. Das bedeutet, ich möchte hier eine Variable eingeben und die Variable soll das aktuelle Verzeichnis sein. pwd steht in der Linux-Welt für den Pfad zu meinem aktuellen Verzeichnis, und den trenne ich, genauso wie bei dem Port hier auch, mit einem Doppelpunkt von dem Pfad ab, der nun innerhalb des Containers gilt. Innerhalb des Containers habe ich eine normale – in Anführungszeichen "normale" – Linux-Distribution und der Apache hat standardmäßig seine Document-Root im Verzeichnis /var/www/html. Das bedeutet, für den Apache heißt dieses Verzeichnis /var/www/html, aber extern ist es genau dieses Verzeichnis hier, wo wir diese info.php liegen haben, diesen qrcode.php usw. Genau das macht dieses Volume-Mapping. So, jetzt habe ich die Flags angegeben und jetzt muss ich natürlich noch sagen: Was will ich denn eigentlich ausführen? Was will ich denn hier eigentlich runnen, also zum Laufen bringen? Und das hier ist dann php:8-apache; bedeutet, ich habe jetzt hier ein Apache-Laufen, auf dem PHP installiert ist. "Unable to find image locally" ist das erste Mal überhaupt kein Problem, das ist genau das, was erwartet wird. Und jetzt werden hier diese ganzen verschiedenen Layer und alles, was er jetzt braucht, erst mal heruntergeladen. Das dauert beim ersten Mal etwas länger, allerdings wenn dieses Image "php:8-apache" locally vorhanden ist, dann wird der nächste Start morgen wieder starten oder das zweite Mal eben deutlich, deutlich schneller gehen. Jetzt warten wir einfach ein paar Sekunden, bis das Ganze hier heruntergeladen und installiert ist. So, und jetzt haben wir hier eine lange Zahl bekommen und die Kommandozeile ist auch wieder frei, das bedeutet, wir können jetzt mal schauen, ob das funktioniert hat. Und jetzt schauen wir mal hier nach localhost:8080/info.php. Und Sie sehen hier, ich habe hier die Version PHP 8.3.1 und offensichtlich einen funktionierenden Apache. Und das alles nur, indem ich eine Zeile eingetippt habe, nämlich "docker run" und dann gefolgt von dem Ganzen hier. Und schon haben Sie ein funktionierenden Apache mit PHP.
Inhalt
-
-
-
-
Beispiel: Eine Webanwendung mit Docker entwickeln4 Min. 51 Sek.
-
(Gesperrt)
Container stoppen2 Min. 26 Sek.
-
(Gesperrt)
Weitere vorgefertigte Images2 Min. 23 Sek.
-
(Gesperrt)
Eigenes Image mit einem Dockerfile erzeugen6 Min. 15 Sek.
-
(Gesperrt)
Einloggen in einen Container4 Min. 33 Sek.
-
Images aus Container erstellen2 Min. 49 Sek.
-
(Gesperrt)
Mehrere Container mit docker-compose orchestrieren6 Min. 59 Sek.
-
(Gesperrt)
Troubleshooting mit docker logs2 Min. 45 Sek.
-