5 Docker Compose Beispiele

5 Docker Compose Beispiele
Docker Compose ist eine effiziente und einfache Möglichkeit, Docker -Container auf einem Host bereitzustellen. Compose nimmt eine YAML -Datei auf und erstellt Container nach ihren Spezifikationen. Die Spezifikation enthält, welche Bilder bereitgestellt werden müssen, welche spezifischen Ports ausgesetzt werden müssen, Volumina, CPU- und Speicherverbrauchsgrenzen usw.

Dies ist eine einfache Möglichkeit, die automatisierte Anwendungsbereitstellung mit einem Frontend, einer Datenbank und einigen Passwörtern und Zugriffsschlüssel für ein gutes Maß einzurichten. Jedes Mal, wenn Sie Docker-Compose aus einem Verzeichnis ausführen, das einen Docker-Compos enthält.YML Es wird in der Datei durchgeführt und bereitet Ihre Anwendung gemäß Angabe bereit.

Um Ihnen dabei zu helfen, Ihren eigenen Docker-Compose zu schreiben.YML hier sind 5 einfache und hoffentlich hilfsbereite Yaml -Snippets, die Sie mischen und anpassen können.

1. Nginx Reverse Proxy

Wahrscheinlich ist die häufigste Anwendung, die als Docker -Container bereitgestellt werden muss, nginx. Nginx kann als Reverse -Proxy -Server und als SSL -Terminierungspunkt für Ihre Webanwendungen dienen. Verschiedene Content -Management -Systeme wie Ghost und WordPress können hinter einem einzelnen Nginx Reverse -Proxy -Server gehostet werden. Daher ist es sinnvoll, jederzeit einen Nginx -Server -Snippet zur Hand zu haben. Das erste, was Sie brauchen würden, ist eine Nginx -Konfigurationsdatei. Wenn Sie keine erstellen möchten, ist der Standard -HTTP -Server das, was Sie erhalten.

Zum Beispiel würde ich einen Ordner nginx-Konfiguration in meinem Home-Ordner erstellen. Die Konfigurationsdatei Nginx.Conf ist in diesem Ordner zusammen mit anderen Dateienverzeichnissen vorhanden, die Nginx AT /etc /nginx erwarten würde. Dies beinhaltet SSL -Zertifikate und -tasten sowie Hostnamen für die Backend -Server, an denen der Datenverkehr weitergeleitet werden muss.

Dieser Ordner kann dann in Nginx Container AT /etc /nginx montiert werden (mit einer schreibgeschützten Berechtigung, wenn Sie zusätzliche Vorsichtsmaßnahmen bevorzugen), und Sie können den Server als Container ausführen. Sie können ihn jedoch lokal aus Ihrem Home-Verzeichnis aus konfigurieren, ohne protokollieren zu müssen in den Behälter.

Dies ist ein Beispiel:

Version: '3'
Dienstleistungen:
nginx:
Bild: Nginx: Neueste
Bände:
- /Home/Benutzer/Nginx-Konfiguration:/etc/nginx
Häfen:
- 80:80
- 443: 443

Ghost Blog

Ghost ist ein CMS, das hauptsächlich im Knoten geschrieben wurde.JS und ist simpel, schnell und elegant im Design. Es stützt sich darauf, dass Nginx den Verkehr an ihn weiterleitet, und verwendet Mariadb oder manchmal SQLite, um Daten zu speichern. Sie können ein schnelles und schmutziges Docker -Bild für Ghost mit einem einfachen Snippet bereitstellen, wie unten gezeigt:

Version: '3'
Dienstleistungen:
Geist:
Bild: Ghost: Neueste
Häfen:
- 2368: 2368
Bände:
- Ghost-Data:/var/lib/ghost/content/
Bände:
Geisterdaten:

Dies schafft ein neues Volumen und montiert ihn im Container, um den Inhalt der Website beharrlich zu speichern. Sie können den vorherigen Nginx Reverse Proxy -Service zu dieser Komponierungsdatei hinzufügen und in Minuten von Minuten einen Produktionsghost -Blog in Betrieb genommen werden, sofern Sie NGINX so konfiguriert haben Container.

Mariadb

Mariadb ist eine nützliche Software, die nicht sofort auf Ihrem Server verfügbar ist. Datenbanken erstellen jedoch viele Protokolle. Die tatsächlichen Daten werden in der Regel überall verteilt und das Einrichten von Datenbankservern und/oder Clients wird nie reibungslos verläuft. Die sorgfältig gestaltete Docker-Compose-Datei kann einige der Probleme mindern, indem versucht, alle relevanten Daten in einem einzigen Docker-Volumen zu speichern, während die Datenbank Software und seine Komplexitäten werden im A -Behälter versteckt:

Version: '3'
Dienstleistungen:
mydb:
Bild: Mariadb
Umfeld:
- Mysql_root_password = my-sekret-pw

Sie können für jede neue Anwendung einen neuen Datenbankcontainer erstellen, anstatt mehr Benutzer in derselben Datenbank zu erstellen, Berechtigungen einzurichten und eine schmerzhafte Rigmarole zu durchsuchen, um sicherzustellen, dass jede App und jeder Benutzer auf dem eigenen Rasen bleibt. Sie müssen auch keine Ports im Host -System öffnen, da der Datenbankcontainer in seinem eigenen isolierten Netzwerk ausgeführt wird und Sie es so ausführen können, dass nur Ihre Anwendung Teil dieses Netzwerks sein kann und somit auf die Datenbank zugreifen kann.

WordPress Stack

Ein Höhepunkt aller verschiedenen Teile von der Verwendung von Umgebungsvariablen zum Ausführen eines Frontend-Webservers und einer Backend-Datenbank kann in einer Docker-Compose-Datei für eine WordPress-Website kombiniert werden, wie unten gezeigt:

Version: '3.3'
Dienstleistungen:
DB:
Bild: Mysql: 5.7
Bände:
- db_data:/var/lib/mysql
Neustart: Immer
Umfeld:
MySQL_ROOT_PASSWORD: Einwordpress
MySQL_Database: WordPress
MySQL_USER: WordPress
MySQL_Password: WordPress
WordPress:
kommt drauf an:
- db
Bild: WordPress: Neueste
Häfen:
- "8000: 80"
Neustart: Immer
Umfeld:
WordPress_DB_HOST: DB: 3306
WordPress_DB_USER: WordPress
WordPress_DB_Password: WordPress
Bände:
db_data:

Dies ist das beliebteste Beispiel und wird auch in der offiziellen Docker-Compose-Dokumentation erwähnt. Es besteht die Möglichkeit, dass Sie WordPress nicht bereitstellen, aber die Komponierungsdatei kann hier weiterhin als schnelle Referenz für ähnliche Anwendungsstapel dienen.

Docker-Compose mit Dockerfiles

Bisher haben wir uns nur mit der reinen Bereitstellungsseite von Docker-Compose befasst. Wahrscheinlich werden Sie komponieren, um nicht nur bereitzustellen, sondern zu entwickeln, zu testen und zu testen und Dann Anwendungen bereitstellen. Unabhängig davon, ob Sie auf Ihrer lokalen Workstation oder auf einem dedizierten CD/CI-Server ausgeführt werden, kann Docker-Compose ein Bild erstellen, indem Sie die im Root des Repositorys vorhandene Dockerfile über Ihre Anwendung oder einen Teil der Anwendung verwenden:

Version: '3'
Dienstleistungen:
Frontend:
bauen: ./Frontend-Code
Back-End:
Bild: Mariadb

Sie werden festgestellt, dass der Backend-Service zwar ein bereits bestehendes Bild von Mariadb verwendet, das Frontend-Bild erstmals aus der Dockerfile im Inneren erstellt wurde ./Frontend-Code-Verzeichnis.

Legoblöcke von Docker-Compose

Die gesamte Funktionalität von Docker-Compose ist ziemlich leicht zu verstehen, wenn wir uns nur zuerst fragen, was wir versuchen zu bauen. Nach ein paar Tippfehler und versuchten Versuchen haben Sie eine Reihe von Ausschnitten, die fehlerfrei funktionieren und wie LEGO -Bausteine ​​zusammengestellt werden können, um Ihre Anwendungsbereitstellung zu definieren.

Ich hoffe, die beiden Beispiele geben Ihnen einen guten Vorsprung damit. Hier finden Sie die vollständige Referenz für das Schreiben von Compose -Datei hier.