Benutzer-Werkzeuge

Webseiten-Werkzeuge


docker:compose

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
docker:compose [2020/03/16 21:41] franzdocker:compose [2025/11/07 10:52] (aktuell) – [Secrets und docker-compose - ein Beispiel] franz
Zeile 1: Zeile 1:
 ====== Docker Compose ====== ====== Docker Compose ======
  
-===== Commandos für Docker Compose =====+---- 
 + 
 +===== Commands für Docker Compose =====
  
   * ''docker-compose build''  baut die Services   * ''docker-compose build''  baut die Services
Zeile 13: Zeile 15:
   * ''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 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.   * ''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 ===== ===== Installation von Docker Compose =====
  
Zeile 18: Zeile 24:
  
 Docker Compose [[https://dasnetzundich.de/docker-compose-erklaert/|erklärt]] 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.1584391311.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