So erstellen Sie einen Docker-basierten Lampenstapel mit Docker-Compose auf Ubuntu 18.04 Bionic Beaver Linux
- 891
- 64
- Aileen Dylus
Zielsetzung
Nach diesem Tutorial können Sie mit der Docker -Technologie eine Lampenumgebung erstellen.
Anforderungen
- Wurzelberechtigungen
- Grundkenntnisse über Docker
Konventionen
- # - Erfordert, dass gegebene Linux -Befehle entweder mit Root -Berechtigungen ausgeführt werden müssen
direkt als Stammbenutzer oder durch Verwendung vonsudo
Befehl - $ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können
Andere Versionen dieses Tutorials
Ubuntu 20.04 (fokale Fossa)
Einführung
Docker ist ein Open -Source -Projekt, das darauf abzielt, Software im Inneren bereitzustellen Behälter
. Sie können sich einen Container als eine Art „Paket“ vorstellen, eine isolierte Umgebung, die den Kernel mit der Hostmaschine teilt und alles enthält, was die Anwendung benötigt. Alle Behälter werden mit Verwendung gebaut Bilder
(Das Central Images -Repository für sie ist DockerHub).
In diesem Tutorial sehen wir, wie Sie einen Lampenstapel erstellen, der auf Dockerized -Komponenten basiert: Nach der Philosophie „Ein Dienst pro Container“ werden wir die Umgebung mithilfe der Umgebung zusammenstellen Docker-Compose
, Ein Werkzeug zum orchestrieren Containerzusammensetzungen.
Ein Dienst im Vergleich zum Multiple -Service für den Container
Es gibt mehrere Vorteile bei der Verwendung eines Dienstes pro Container, anstatt mehrere Dienste im selben auszuführen. Modularität zum Beispiel (wir können einen Behälter für verschiedene Zwecke wiederverwenden) oder eine bessere Wartbarkeit: Es ist einfacher, sich auf ein bestimmtes Stück einer Umgebung zu konzentrieren, anstatt alle gleichzeitig zu berücksichtigen. Wenn wir diese Philosophie respektieren möchten, müssen wir für jede Komponente unseres Lampenstapels einen Container erstellen: einen für Apache-Php und eine für die Datenbank. Die verschiedenen Behälter müssen in der Lage sein, miteinander zu sprechen: Um verknüpfte Container leicht zu orchestrieren, werden wir verwenden Docker-Compose
.
Vorläufige Schritte
Vor dem Fortfahren müssen wir installieren Docker
Und Docker-Compose
auf unserem System:
# APT-Get Installieren Sie Docker Docker-Compose
Die Pakete werden in wenigen Sekunden installiert und die Docker
Der Service wird automatisch gestartet. Wir können nun mit der Erstellung eines Verzeichnisses für unser Projekt und darin eingehen, ein weiteres, um die Seiten zu halten, die von Apache bedient werden. DocumentRoot wäre ein aussagekräftiger Name dafür; In diesem Fall ist die einzige Seite, die es bedient wird Index.Php
:
$ mkdir -p dockerized-lamp/documentRoot $ echo ""> docerized-lamp/documentroot/index.Php
Kopieren Hier besteht unser Code einfach in der Phpinfo
Funktion: Es ist Ausgabe (eine Seite, die Informationen zu PHP zeigt, falls Sie es nicht wissen), ist das, was unser Server standardmäßig anzeigt. Verwenden wir jetzt unseren Lieblingsredakteur, um die zu erstellen Docker-Compose.YML
Datei für unser Projekt.
PHP-Apache
Wir können nun Anweisungen zum Erstellen und Verbinden unserer Container mit der Docker-Compose-Datei angeben. Dies ist eine Datei, die die verwendet Yaml
Syntax. Alle Definitionen müssen in die bereitgestellt werden Dienstleistungen
Abschnitt.
Version: '3' Dienste: Php-Apache: Bild: Php: 7.2.1 -Apache -Ports: - 80:80 Bände: - ./Documentroot:/var/www/html Links: - 'mariadb'
Kopieren Schauen wir uns an, was wir hier gerade getan haben. Die erste Zeile, die wir in die Datei eingefügt haben, Ausführung
, Gibt an, welche Docker-Compose-Syntaxversion wir verwenden werden, in diesem Fall die Version 3
, Die neueste Hauptversion verfügbar. In der Dienstleistungen
Abschnitt beschrieben wir unseren Dienst, indem wir seinen Namen angeben, PHP-Apache
(Ein willkürlicher Name können Sie verwenden, was Sie wollen), dann die Anweisungen zum Erstellen.
Der Bild
Mit Keyword können Sie Docker wissen, mit welchem Bild wir unseren Container erstellen möchten: In diesem Fall habe ich verwendet 7.2.1-Apache
die uns Php 7 liefern.2.1 zusammen mit dem Apache -Webserver. Benötigen Sie eine andere PHP -Version? Sie müssen nur aus den vielen auf der Bildseite auf DockerHub bereitgestellt.
Die zweite Anweisung, die wir zur Verfügung gestellt haben Häfen
: Wir fordern Docker auf, den Port abzubilden 80
auf unserem Gastgeber, zum Hafen 80
Auf dem Container: Auf diese Weise erscheint wir den Webserver direkt auf unserem System.
Wir haben dann das benutzt Bände
Anweisung zum Angeben a Binden Sie die Halterung
. Da sich der Code während der Entwicklung stark ändert. Stattdessen werden wir Docker sagen Dokument Root
Verzeichnis, at /var/www/html
im Behälter. Dieses Verzeichnis repräsentiert den Hauptapache Virtualhost
Das Dokument root, daher ist der Code, den wir darin eingeben, sofort verfügbar.
Endlich haben wir das benutzt Verknüpfung
Schlüsselwort angeben Mariadb
als Argument. Dieses Schlüsselwort wird nicht benötigt, wie es scheinen mag, um eine Verbindung zwischen den beiden Containern zu erstellen: auch ohne sie anzugeben, die Mariadb
Der Service wäre aus dem für das gebauten Container erreichbar Apache-Php
Service, indem er seinen Namen als Hostname verwendet. Das Schlüsselwort macht zwei Dinge: Lassen Sie uns zunächst optional eine angeben alias
Wir können zusätzlich zu seinem Namen auf einen Dienst verweisen. Also zum Beispiel durch Schreiben:
Link: Mariadb: Datenbankservice
Kopieren Der Service könnte auch mit Verwendung erreicht werden Datenbankservice
. Die zweite Sache Verknüpfung
angibt eine Abhängigkeit: in diesem Fall die PHP-Apache
Der Service wird als abhängig von der angesehen Mariadb
eins, so wird letzteres vor dem ersteren gestartet.
Installieren Sie PHP -Erweiterungen
Die Standard-PHP-Apache-Dockerfile enthält keine einige PHP-Erweiterungen wie MySQLI oder PDO. Um sie zu installieren, müssen wir basierend darauf unsere eigene Dockerfile erstellen. Dazu erstellen wir ein Verzeichnis in unserem Projekt mit dem Namen PHP-Apache (dies wird unser sein Kontext aufbauen
) und darin unsere Dockerfile. Fügen Sie den folgenden Code als PHP-Apache/Dockerfile ein und speichern Sie den folgenden Code:
Von PHP: 7.2.1-apache Wartenwerfer Egidio Lindil Run Docker-Php-ext-Installation PDO PDO_MYSQL MYSQLI
Kopieren Wie Sie sehen können, mit dem AUS
Anweisungen haben wir angegeben, dass diese Dockerfile auf dem Standard basieren sollte. Dann haben wir a aufgenommen LAUFEN
Anweisung: Verwenden des Skripts im Bild selbst, Docker-Php-EXT-Installation
, Wir schließen die Erweiterungen ein, die für die Verwendung von PDO und MySQLI erforderlich sind. An diesem Punkt müssen wir den Abschnitt PHP-Apache in unserem Docker-Compose leicht ändern, wenn wir unsere benutzerdefinierte Dockerfile verwenden möchten.YML, so:
Version: '3' Dienste: Php-Apache: Build: Kontext: ./PHP -Apache -Ports: - 80:80 Bände: - ./Documentroot:/var/www/html Links: - 'mariadb'
Kopieren Was hat sich verändert? Anstatt das zu verwendende Remote -Bild direkt anzugeben, haben wir das bereitgestellt Kontext
Anweisung im Inneren der bauen
Abschnitt, damit die Dockerfile im von uns erstellten und hier als Argument bereitgestellten Verzeichnis enthalten ist, wird automatisch verwendet. Das Kontextverzeichnis wird vom Docker -Daemon beim Erstellen des Bildes importiert. Wenn wir also zusätzliche Dateien hinzufügen möchten, müssen wir sie auch dort einsetzen.
Der Datenbankdienst
Eine Datenbank in einem wesentlichen Teil einer Lampenumgebung wird für die Persistenz verwendet. In diesem Fall werden wir verwenden Mariadb
:
Mariadb: Bild: Mariadb: 10.1 Volumina: - Mariadb:/var/lib/mysql Umgebung: TZ: "Europa/rome" mySQL_Allow_Empty_password: "no" mysql_root_password: "rootpwd" mysql_user: testuser 'mysql_password:' testpassword 'mysql_dbase:
Kopieren Wir wissen bereits, was die Bild
Schlüsselwort ist für. Das gleiche gilt für die Bände
Anweisung, mit Ausnahme der Tatsache, dass wir diesmal nicht a deklariert haben Binden Sie die Halterung
, Stattdessen haben wir uns auf A verwiesen Volumen genannt
, für Beharrlichkeit. Es ist wichtig, sich für einen Moment auf den Unterschied zwischen den beiden zu konzentrieren.
Wie bereits erwähnt, a Binden Sie die Halterung
ist eine schnelle Möglichkeit, ein Hostverzeichnis in einem Container zu montieren, damit die in diesem Verzeichnis enthaltenen Dateien aus der eingeschränkten Umgebung zugänglich werden: Um eine Bindungshalterung anzugeben, die kurze Syntax
Ist:
:
Der Hostpfad kann ein Verwandter (zur Docker-Compose-Datei) oder ein absoluter Pfad sein, während der Mountpoint im Container in absoluter Form angegeben werden muss.
A Volumen genannt
ist etwas anderes: Es ist ein angemessenes Docker -Volumen
Wird für die Persistenz verwendet, und es muss im Allgemeinen gegenüber einer Bindungshalterung bevorzugt werden, da es nicht von der Host -Dateistruktur abhängt (einer der vielen Vorteile von Containern, es ist ihre Portabilität). Die Syntax, mit der A referenzieren kann Volumen genannt
In einer Dienstdefinition befindet sich:
:
A Volumen genannt
Der Lebenszyklus ist unabhängig von dem eines Containers, der ihn verwendet, und muss in der deklariert werden Bände
Abschnitt der Docker-Compose-Datei, wie wir gleich sehen werden.
Zurück zur Definition des Dienstes jetzt. Das letzte Schlüsselwort, das wir verwendet haben, ist Umfeld
: Es lässt uns einige Umgebungsvariablen festlegen, die das Verhalten des Dienstes beeinflussen. Zuerst benutzten wir TZ
Um unsere Datenbank Timezone anzugeben: In diesem Fall habe ich „Europa/Rom“ verwendet. Die Namen der anderen Variablen sagen alles über ihren Zweck aus: Durch die Verwendung von wichtigen Details als Name der zu erstellenden Standarddatenbank (TestDB), werden der Benutzer und sein Passwort erstellt werden. Wir haben auch das Stammbenutzerkennwort festgelegt und beschlossen, keine leeren Passwörter zuzulassen.
Der Volumesabschnitt
In diesem Abschnitt müssen wir das erklären Volumen genannt
Wir haben uns aus dem bezogen Mariadb
Serverdefinition:
Bände: Mariadb:
Kopieren Am Ende wird unsere Datei in ihrer Gesamtheit aussehen:
Version: '3' Dienste: Php-Apache: Bild: Php: 7.2.1 -Apache -Ports: - 80:80 Bände: - ./Documentroot:/var/www/html: z links: - 'mariadb' mariadb: Bild: mariadb: 10.1 Volumina: - Mariadb:/var/lib/mysql Umgebung: TZ: "Europa/rome" mySQL_Allow_Empty_password: "no" mysql_root_password: "rootpwd" mysql_user: testuser 'mysql_password:' testpassword: 'testpassword' mysql_dada:
Kopieren Es ist wirklich wichtig, die Eindrücke zu respektieren, damit die Datei korrekt interpretiert werden kann.
Lassen Sie uns unsere Umwelt aufbauen
Sobald wir alle Anweisungen für unsere Dienste angegeben haben, können wir die nutzen Docker-Compose Up
Befehl, sie zu bauen. Der Befehl muss in demselben Verzeichnis ausgeführt werden, in dem die Docker-Compose.YML
Datei befindet sich:
# Docker-Compose Up
Ein paar Minuten und wir werden bereit sein zu gehen. Am Ende, wenn alles gut lief, durch Navigieren zu Lokalhost
Auf unserem Host werden wir die Ausgabe des PHP -Skripts sehen, das wir darin platziert haben Dokument Root
:
Unsere Lampenumgebung ist jetzt bereit, genutzt zu werden.
Gedanken schließen
Wir haben gesehen, wie man einen Basic erstellt LAMPE
Umgebung, mit Docker und orchestrieren Container und Dienste mit Docker-Compose
. Das Setup, das wir verwendet haben, konzentriert sich auf die Entwicklung und kann weiter erweitert und optimiert werden, um den unterschiedlichen Anforderungen zu entsprechen: Doker -Dokumentation Es ist eine sehr gut geschriebene Quelle, die Sie konsultieren können, um Ihr Docker -Wissen zu erweitern. Zögern Sie nicht, einen Kommentar für alle Zweifel oder Fragen zu hinterlassen, die Sie haben.
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- So erstellen Sie einen Docker -basierten Lampenstapel mit Docker auf…
- Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
- Ubuntu 20.04 Leitfaden
- Ubuntu 20.04 Hadoop
- Die 8 besten Ubuntu -Desktop -Umgebungen (20.04 fokale Fossa…
- FTP -Clientliste und -installation auf Ubuntu 20.04 Linux…
- So stellen Sie über SSH eine Verbindung zum Docker -Container her
- So installieren Sie Lampenstapel auf Almalinux
- « So installieren Sie Discord auf Ubuntu 18.04 Bionic Beaver Linux
- So setzen Sie das Root MySQL -Passwort auf Ubuntu 18 zurück.04 Bionic Beaver Linux »