= docker-compose Thomas W. Stütz 1.0.0, 2021-03-24: How to use docker-compose in project work @ HTL Leonding college ifndef::imagesdir[:imagesdir: images] //:toc-placement!: // prevents the generation of the doc at this position, so it can be printed afterwards :sourcedir: ../src/main/java :icons: font :sectnums: // Nummerierung der Überschriften / section numbering :toc: left :toclevels: 5 :experimental: true :linkattrs: // so window="_blank" will be executed //Need this blank line after ifdef, don't know why... ifdef::backend-html5[] // https://fontawesome.com/v4.7.0/icons/ icon:file-text-o[link=https://raw.githubusercontent.com/htl-leonding-college/docker-lecture-notes/main/asciidocs/{docname}.adoc] ‏ ‏ ‎ icon:github-square[link=https://github.com/htl-leonding-college/docker-lecture-notes] ‏ ‏ ‎ icon:home[link=https://htl-leonding-college.github.io/docker-lecture-notes/docker.html] endif::backend-html5[] // print the toc here (not at the default position) //toc::[] [[bookmark-document-start]] == Was bisher geschah ... * Docker Lösungen bestehen aus Images und Containern * Docker Container beinhalten einzelne Dienste ** Früher wurden mehrere Dienste pro OS installiert ** Dies ist nicht mehr der Fall -> Ein Dienst pro Container * Jeder Docker Container erhält vom Docker daemon eine IP in einem eigenen "Docker-Netzwerk". ** Diese Netzwerk mus vorab mit `docker network create xxx` erstellt werden ** In dieses Netzwerk können mehrere Container eingebunden werden mit `--network=xxx`. ** Dadurch ist der Zugriff aufeinander ohne geöffnete Ports nach außen möglich ** Dies wird selten verwendet ** Will man mehrere Container für eine Softwarelösung verwenden ist neben zb k8s auch docker-compose eine Lösung == Überblick * docker-compose dient zum Orchestrieren von (mehreren) Containern. * Diese Container laufen in (mind.) einem gemeinsamen (virtuellem) Docker-Netzwerk mit eigenen IP-Adressen ** Der Zugriff aufeinander - also zwischen den Containern - ist leicht möglich (dh ohne Ports zu öffnen) image:docker-compose.png[] == Konfiguration von docker-compose * Der Bauplan für docker-compose-Softwarelösungen sind sogenannte yaml-Files -> docker-compose.yml [source,yml] ---- version: '3.8' services: mc: image: itzg/minecraft-server ports: - 25565:25565 environment: EULA: "TRUE" volumes: - ./minecraft-data:/data ---- .Aufruf mit ---- docker-compose up -d ---- * -d ... daemon -> läuft im Hintergrund .Das Datenverzeichnis wird automatisch erstellt ---- . └── minecraft-data ├── logs └── world ├── DIM-1 │   └── data ├── DIM1 │   └── data ├── data ├── datapacks ├── playerdata └── region ---- https://github.com/itzg/docker-minecraft-server == Beispiel: Erstellen eines Quarkus-Backends mit postgres-DB