Docker Compose ist ein Tool, mit dem Sie Docker-Anwendungen mit mehreren Containern definieren und orchestrieren können. Es verwendet eine YAML-Datei, um die Container, Netzwerke und Volumes der Anwendung zu konfigurieren.
Compose kann für verschiedene Zwecke verwendet werden. Bereitstellungen von Einzelhostanwendungen, automatisierte Tests und lokale Entwicklung sind die beliebtesten Anwendungsfälle für Docker Compose.
Dieses Tutorial führt Sie durch den Installationsprozess der neuesten Version von Docker Compose auf Debian 9. Wir werden auch die grundlegenden Docker Compose-Konzepte und -Befehle untersuchen.
Voraussetzungen #
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Lernprogramm fortfahren:
- Als Benutzer mit sudo-Berechtigungen angemeldet.
- Haben Sie Docker auf Ihrem Debian 9-Rechner installiert.
Installieren Sie Docker Compose unter Debian #
Das Docker Compose-Installationspaket ist in den offiziellen Debian 9-Repositories verfügbar, aber es ist möglicherweise nicht immer die neueste Version. Der empfohlene Ansatz besteht darin, Docker Compose aus dem GitHub-Repository von Docker zu installieren.
Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste stabile Version von Docker Compose Version 1.23.1
. Bevor Sie die Compose-Binärdatei herunterladen, besuchen Sie die Compose-Repository-Release-Seite auf GitHub und prüfen Sie, ob eine neue Version zum Download verfügbar ist.
Führen Sie die folgenden Schritte aus, um die neueste Version von Docker Compose auf Debian 9 zu installieren:
-
Laden Sie zunächst die Docker Compose-Binärdatei in
/usr/local/bin
herunter Verzeichnis mit dem folgendencurl
Befehl:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
Wenn der Download abgeschlossen ist, erteilen Sie der Compose-Binärdatei ausführbare Berechtigungen:
sudo chmod +x /usr/local/bin/docker-compose
-
Überprüfen Sie die Installation, indem Sie Folgendes eingeben:
docker-compose --version
Die Ausgabe sieht in etwa so aus:
docker-compose version 1.23.1, build b02f1306
Erste Schritte mit Docker Compose #
In diesem Abschnitt zeigen wir, wie Sie Docker Compose verwenden, um einen WordPress-Stack auf Ihrem Debian 9-Rechner zu verwalten.
Erstellen Sie zunächst ein Verzeichnis für das Projekt und wechseln Sie dorthin:
mkdir wordpress_app
cd wordpress_app
Öffnen Sie Ihren Texteditor und erstellen Sie eine Datei namens docker-compose.yml
innerhalb des Projektverzeichnisses:
nano docker-compose.yml
Fügen Sie den folgenden Inhalt ein:
docker-compose.ymlversion: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
Was macht der Code oben?
In der ersten Zeile geben wir die Version der Compose-Datei an. Es gibt mehrere verschiedene Versionen des Compose-Dateiformats mit Unterstützung für bestimmte Docker-Versionen.
Als nächstes definieren wir zwei Dienste, db
und wordpress
. Jeder Dienst führt ein Image aus und erstellt einen separaten Container, wenn docker-compose ausgeführt wird.
Die db
Dienst:
- Verwendet
mysql:5.7
Bild. Wenn das Image auf Ihrem System nicht vorhanden ist, ruft Compose es aus dem öffentlichen Docker-Hub-Repository ab. - Verwendet den Neustart
always
Richtlinie, die den Container anweist, immer neu zu starten. - Erzeugt ein benanntes Volume
db_data
um die Datenbank zu persistieren. - Definiert die Umgebungsvariablen für
mysql:5.7
Bild.
Die wordpress
Dienst:
- Verwendet
wordpress
Bild. Wenn das Image auf Ihrem System nicht vorhanden ist, ruft Compose es aus dem öffentlichen Docker-Hub-Repository ab. - Verwendet den Neustart
always
Richtlinie, die den Container anweist, immer neu zu starten. - Mountt die
wp_data
Verzeichnis auf dem Host nach/var/lib/mysql
im Behälter. - Leitet den exponierten Port 80 auf dem Container an Port 8080 auf dem Host-Rechner weiter.
- Definiert die Umgebungsvariablen für
wordpress
Bild. - Der
depends_on
ab Instruktion definiert die Abhängigkeit zwischen den beiden Diensten. In diesem Beispieldb
wird vorwordpress
gestartet .
Starten Sie aus dem Projektverzeichnis die WordPress-Anwendung, indem Sie den folgenden Befehl ausführen:
docker-compose up
Die Ausgabe sollte in etwa so aussehen:
...
wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002748 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.12 configured -- resuming normal operations
wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002912 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose zieht beide Bilder, startet zwei Container und erstellt die wp_data
Verzeichnis in Ihrem Projektverzeichnis.
Geben Sie http://0.0.0.0:8080/
ein in Ihrem Browser und Sie sehen den Wordpress-Installationsbildschirm.
An diesem Punkt ist die WordPress-Anwendung betriebsbereit und Sie können mit der Arbeit an Ihrem Design oder Plugin beginnen.
Um Compose zu stoppen, drücken Sie CTRL+C
.
Sie können Compose auch in einem getrennten Modus starten, indem Sie -d
übergeben Flagge.
docker-compose up -d
Um die laufenden Dienste zu überprüfen, verwenden Sie den ps
Möglichkeit:
docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
wordpress_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Wenn Compose im getrennten Modus ausgeführt wird, um die Dienste zu stoppen, verwenden Sie:
docker-compose stop
Wenn Sie die Container vollständig entfernen möchten, verwenden Sie den down
Möglichkeit:
docker-compose down
Übergeben der --volumes
Schalter entfernt auch die Datenmengen:
docker-compose down --volumes
Docker Compose deinstallieren #
Wenn Sie Docker Compose deinstallieren müssen, können Sie die Binärdatei einfach entfernen, indem Sie Folgendes eingeben:
sudo rm /usr/local/bin/docker-compose