Benutzer-Werkzeuge

Webseiten-Werkzeuge


docker:compose

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
docker:compose [2020/03/08 10:54] – angelegt franzdocker:compose [2025/11/07 10:52] (aktuell) – [Secrets und docker-compose - ein Beispiel] franz
Zeile 1: Zeile 1:
-===== Docker Compose =====+====== Docker Compose ====== 
 + 
 +---- 
 + 
 +===== Commands für Docker Compose ===== 
 + 
 +  * ''docker-compose build''  baut die Services 
 +  * ''docker-compose up -d [SERVICENAME]''  erstellt die Container und startet diese. Die Container werden in der korrekten Reihenfolge erstellt und gestartet. Wenn die Container bereits erstellt sind und laufen, bewirkt dieser Befehl einen Restart. -d : startet die Container im Hintergrund 
 +  * ''docker-compose down''  stoppt und entfernt alle Container, Netzwerke, Images und Volumes 
 +  * ''docker-compose start [SERVICENAME]''  startet die Container, dazu müssen diese aber vorher eingestellt worden sein. 
 +  * docker-compose stop [SERVICENAME] stoppt alle zu dem Stack gehörenden Container. 
 +  * ''docker-compose rm -f ''  entfernt alle zu dem Stack gehörenden Container, diese müssen gestoppt sein. -f : erzwingt das Löschen der Container 
 +  * ''docker-compose logs''  zeigt die logs aller zu dem Stack gehörenden Container an. Wenn der Stack mit docker-compose up -d im Hintergrund gestartet wurde können so die Logsfiles verfolgt werden. 
 +  * ''docker-compose ps''  zeigt die Liste aller dem Stack zugehörenden Container und deren Status an. 
 +  * ''docker-compose exec SERVICENAME /bin/sh''  gleich wie bei docker exec wird ein Befehl innerhalb des Containers ausgeführt. Da die Container, welche von docker-compose erstellt werden, immer den Namen des Ordners in dem sich das docker-compose.yml file befindet, enthält, ist der Name des Containers meist ORDERNAME_SERVICENAME_1 (für die erste Instanz des Services) und könnte auch mit docker exec ORDERNAME_SERVICENAME_1 angesprochen werden. Bei docker-compose exec kann der Container aber eben direkt über den SERVICENAMEN angesprochen werden. Hier werden die Parameter -it nicht benötigt. 
 +  * ''docker-compose scale SERVICENAME=X''  die Anzahl der laufenden Containerinstanzen des Service SERVICENAME wird auf X erhöht oder verringert. Dabei muss darauf geachtet werden, dass die Definition des Services im ''**docker-compose.yml**''  File skalierbar ist. Wenn zum Beispiel ''**ports: -80:80**''  angegeben ist kann es zu einem Konflikt kommen. Es kann nur ein Container von diesem Service erstellt werden, da ein zweiter ebenfalls auf den Port 80 des Hostsystem gemappt haben möchte, dieser aber bereits in Verwendung ist. In der ''**docker-compose.yml**''  muss ''**ports: -80:80**''  zu ''**ports: -80**''  geändert werden. Docker vergibt und managed die internen Ports selbst. 
 +===== Einführung in Docker Compose ===== 
 + 
 +eine gute Einführung in die Syntax und Bedeutung der Befehle [[https://dasnetzundich.de/docker-compose-erklaert/|findest du hier.]] oder [[https://www.techrepublic.com/article/how-to-build-a-docker-compose-file/|hier]] 
 + 
 +===== Installation von Docker Compose =====
  
 Wie man docker-compose installiert und ein erstes yml file erstellt [[https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04|findest du hier]] Wie man docker-compose installiert und ein erstes yml file erstellt [[https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04|findest du hier]]
 +
 +Docker Compose [[https://dasnetzundich.de/docker-compose-erklaert/|erklärt]]
 +
 +===== Secrets und docker-compose - ein Beispiel =====
 +
 +hier an einem Beispiel von Nextdcloud
 +
 +<code>
 +version: '3.8'
 +
 +services:
 +  mariadb:
 +    image: mariadb:10.11
 +    restart: always
 +    environment:
 +      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
 +      MYSQL_DATABASE: nextcloud
 +      MYSQL_USER: nextcloud
 +      MYSQL_PASSWORD_FILE: /run/secrets/db_user_password
 +    secrets:
 +      - db_root_password
 +      - db_user_password
 +    volumes:
 +      - db:/var/lib/mysql
 +
 +  redis:
 +    image: redis:alpine
 +    restart: always
 +    command: ["redis-server", "--requirepass", "$(cat /run/secrets/redis_password)"]
 +    secrets:
 +      - redis_password
 +    volumes:
 +      - redis:/data
 +
 +  nextcloud:
 +    image: nextcloud:31
 +    restart: always
 +    depends_on:
 +      - mariadb
 +      - redis
 +    environment:
 +      MYSQL_PASSWORD_FILE: /run/secrets/db_user_password
 +      MYSQL_DATABASE: nextcloud
 +      MYSQL_USER: nextcloud
 +      MYSQL_HOST: mariadb
 +      REDIS_HOST: redis
 +      REDIS_HOST_PASSWORD_FILE: /run/secrets/redis_password
 +      NEXTCLOUD_ADMIN_PASSWORD_FILE: /run/secrets/nextcloud_admin_password
 +      NEXTCLOUD_ADMIN_USER: admin
 +    secrets:
 +      - db_user_password
 +      - redis_password
 +      - nextcloud_admin_password
 +    volumes:
 +      - nextcloud:/var/www/html
 +    ports:
 +      - 8080:80
 +
 +volumes:
 +  db:
 +  redis:
 +  nextcloud:
 +
 +secrets:
 +  db_root_password:
 +    file: ./secrets/db_root_password
 +  db_user_password:
 +    file: ./secrets/db_user_password
 +  redis_password:
 +    file: ./secrets/redis_password
 +  nextcloud_admin_password:
 +    file: ./secrets/nextcloud_admin_password
 +
 +</code>
  
  
docker/compose.1583661256.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki