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

 

Pixelparker Logo
Autor
pixelparker
Weitere Artikel die Sie interessieren könnten
DigitalOcean
DigitalOcean
Häufige Probleme mit DigitalOcean.
Docker Beispiel Silverstripe CMS
Docker Beispiel Silverstripe CMS
Die lokale Entwicklung von Silverstripe kann über die Container Plattform Docker unproblematisch und einfach erstellt werden. Neben dem CLI Setup erstellen wir uns auch eine vereinfachte Compose Version.
Docker Compose
Docker Compose
Wir listen die Docker Compose grundlegenden Bezeichner und erstellen ein Multi-Container Beispiel mit Wordpress und MariaDB.
Docker Networks
Docker Networks
Docker Datenvolumen
Docker Datenvolumen
Docker Applikation ausliefern
Docker Applikation ausliefern
Dockerized Applikationen ausführen
Dockerized Applikationen ausführen
OpenFaaS Cloud Bootstrap
OpenFaaS Cloud Bootstrap
OpenFaaS Cloud macht CI / CD besonders einfach und versteckt die Komplexität dahinter.
Openfaas Digitalocean Droplet
Openfaas Digitalocean Droplet
Das OpenFaaS Droplet auf DigitalOcean zum schnellen Setup und Startup!