Docker Compose
Docker Compose
Wichtige Bezeichner:
up | alle Container und Netzwerke werden generiert
down | alle Container und Netzwerke werden entfernt
start | nach dem start mit "up" und stop mit "stop" können Container wieder gestartet werden
stop | nach dem start mit "up" können alle oder ein Container gestoppt werden
restart | alle oder einen Container neu starten
ps | alle Container innerhalb der Multi Container Applikation auflisten.
top | listet alle laufenden Prozesse aller Container
-f --tail 2 | listet Logs aller Container - 2 = Anzahl der Logs
exec | auch unter Docker Compose funktioniert exec mit dem Service Namen e.g. docker-compose exec wordpress
run | damit können wir einen Service ohne Port Mapping starten
kill | zwingt den Container zum stop
Beispiel Wordpress:
Wir erstellen ein docker-compose file und inkludieren den fertigen Inhalt:
version: '3' services: wordpress: image: wordpress:5.0.3-php7.3-apache environment: - WORDPRESS_DB_USER=wpadmin - WORDPRESS_DB_PASSWORD=wpadminpassword ports: - 8088:80 networks: - wordpressnet volumes: - wordpressdata:/var/www/html mysql: image: mariadb:10.3.11-bionic environment: - MYSQL_ROOT_PASSWORD=mysqlrootpw - MYSQL_USER=username - MYSQL_PASSWORD=mysqlusernamepw - MYSQL_DATABASE=wordpress networks: - wordpressnet volumes: - mariadbdata:/var/lib/mysql networks: wordpressnet: volumes: wordpressdata: mariadbdata:
Was bedeutet der Inhalt?
Version 3: Spiegelt die Docker Compose Version wieder die wir verwenden möchten.
Services: Jeder Service stellt genau 1x Image dar. Wir geben zusätzlich einige im Image definierten Parameter an.
Note: Dies stellt nur ein Beispiel dar - Logindaten sollten nicht direkt gespeichert werden. Wenn wir dieses Docker Compose File starten können wir mit network ls und volume ls die entsprechenden Spezifikationen einsehen.
Custom Netzwerk
Das Netzwerk muss im root und pro Service angegeben werden. Dies ist Optional - bei default wird das default bridge network verwendet.
Details zu Custom Netzwerke haben wir in einem anderen Artikel zusammengefasst.
Custom named Volumes
Die Volumes müssen im root angegeben werden und dann in jedem Service mit dem entsprechenden Verzeichnis mappen.
Details über Custom named Volumes haben wir in einem anderen Artikel zusammengefasst.
Überschreiben von Compose
Oft kann es vorkommen, dass wir unser Compose File etwas anpassen müssen. Dafür können wir es überschreiben. Standardmäßig gibt es dafür das File docker-compose.override.yml. Die darin vorgenommenen Einstellungen überladen die Einstellungen im Compose File.
-f | Wir können auch mehrere Composer Files anlegen und deren Verwendung mit -f steuern.
Beispiel - Override verhindern:
docker-compose -f docker-compose.yml up -d
Beispiel - Custom Flow:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
Es können beliebig viele und unterschiedliche Files durch diesen Prozess aneinandergereiht werden.
Variablen Austauschen .env
Docker ermöglicht uns die Verwendung einer .env Datei und inkludiert deren Variablen in den Build-Prozess.
Wir können also den Bereich environment bei unseren services mit Variablen versehen:
servises: wordpress: environment: - WORDPRESS_DB_USER=${WP_DB_USER}
Und diese innerhalb des .env Files deklarieren:
WP_DB_USER=wpadmin