# docker-compose

<p class="callout warning">Die Tage hab ich mich gewundert, als der docker-compose beim Deployment massive Fehler ausgegeben hatte.   
Er konnte keine Dateien anlegen, obwohl die Rechte alle gepasst hatten (gibt auch noch einen anderen Grund aber nicht in diesem Fall). Nach etwas Suche ergab sich dass das in den jeweiligen Linux Distributionen enthaltene docker-compose total veraltet ist und es keine aktuellen Packages für die jeweilige Distribution gibt.   
</p>

<p class="callout warning">Inzwischen gibt es ein neues Software Paket "docker-compose-v2" welches mit "apt install docker-compose-v2" installiert werden kann. Es muss "docker-compose" deinstalliert werden, damit der Befehl fehlerfrei auf dem Dockerhost ausgeführt werden kann. </p>

Deshalb gibt es einen anderen Weg.

#### Aktuelle Umgebung : 

docker-compose -v  
docker-compose version **1.29.2**, build unknown  
joachim@dockermain:~$ cat /etc/os-release  
PRETTY\_NAME="Ubuntu 22.04.3 LTS"  
NAME="Ubuntu"  
VERSION\_ID="22.04"  
VERSION="22.04.3 LTS (Jammy Jellyfish)"

Wenn man die Seite besucht: [https://github.com/docker/compose](https://github.com/docker/compose) gibt es bereits ein Release 2.24.1

##### Neues Verfahren : 

Das Docker Compose wird als CLI-Plugin in Docker eingebunden. Dh. in Zukunft gibt man nicht mehr "docker-compose -f docker-compose.yml up -d" ein, sondern **"docker compose -f docker-compose.yml up -d"** .

```shell
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
```

Die Installation erfolgt im $HOME des angemeldeten Benutzer der "NICHT ROOT" ist. Der Benutzer muss in der Gruppe "docker" sein.

```shell
usermod -aG docker <USERNAME>
```

Sollte Docker Compose für alle Benutzer auf dem Dockerhost zur Verfügung sein muss es in folgenden Verzeichnis installiert werden :

```
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
```

Nun folgenden Befehl eingeben:

```shell
$ docker compose version
Docker Compose version v2.24.0
```

Ab jetzt sollten Docker Anwendungen mit docker-compose.yml Files nur noch mit folgenden Befehl deployed werden:

<p class="callout info">docker compose -f docker-compose.yml up -d </p>

Und wie ein Wunder, es sind alle Fehlermeldungen verschwunden.

<p class="callout warning">Es gibt Zusatztools wie : apt install docker-ce docker-ce-cli docker-compose-plugin   
</p>

Diese funktionieren aber nicht oder sind zumindest bei Ubuntu 20.04 / 22.04 nicht mehr vorhanden, deshalb muss dieser Weg so gemacht werden. Ich vermute mal dass docker.io so ein ähnliches Problem hat, mal sehen ich werde da mal auf Suche gehen.