Docker Container und Watchtower?


20.09.2023, 12:02

meine idee leider Funktioniert es nicht

version: '3'

services:

watchtower:

image: containrrr/watchtower

container_name: watchtower

volumes:

- /var/run/docker.sock:/var/run/docker.sock

command: >

-c /docker/1/docker-compose.yml --interval 30

-c /docker/2/docker-compose.yml --interval 60

restart: always

3 Antworten

Eine Alternative zum Testen wäre, wenn du dein eigenes Docker Image benutzt. Etwas Wissen über Docker wäre dafür vom Vorteil.

Beispiel Image Dockerfile:

FROM python:alpine
CMD python3 -u -c "print(1); import time; time.sleep(9999)"

Das Image gibt eine Zahl aus auf die Konsole/Logs aus und schläft eine Weile, damit der Container nicht direkt beendet wird.

Wenn du ein Update simulieren willst, kannst du die Zahl im print Befehl verändern und das Image erneut bauen. Über die Log Ausgabe kannst du u.A. überprüfen, ob die neue Version genommen wurde.

Da Watchtower keine neuen Images erkennen kann, die lokal vorhanden sind, muss das Test Image in einer Registry vorhanden sein. Das könnte Docker Hub, eine lokale Docker Registry im Docker Image, gegebenfalls ein Git Server oder eine belibieg andere Registry sein.

Dann brauchst du noch ein neues Docker Compose Projekt. Dies könnte in der minimalen Version so aussehen:

services:
  test:
    image: [Image von Registry]:latest

Dein Problem aus dem Nachtrag liegt an einem anderen Ort.

Problem 1: Die Docker Compose Datei werden nicht in den Container eingebunden. Der angegebene Pfad führt ins Nichts.

Problem 2: Der Parameter "-c" führt zum Fehler. Der Paramter ist für die Cleanup Option und möchte danach auch keinen Pfad. Es gibt auch keinen alternative Option zum Angeben von Docker Compose Dateien.

Du solltest dir die Dokumentation von Watchtower anschauen. Sofern nicht ausgeschlossen, werden alle laufenden Container aktualisiert.

Ohne eigene Registry kannst du das nicht wirklich proaktiv testen. Aber du kannst prinzipiell der Software schon vertrauen, dass sie tut was sie soll :)

Einfach beobachten, wenn deine App in der Registry ein Update bekommt -> bekommts das lokal auch, wenn dein Watchtower sauber funktioniert.

Normalerweise pullst du das Image mit docker image pull beispiel:latest. Manchmal gibt es Tags (das hinter dem Doppelpunkt) für ältere Versionen. Das musst du aber im Repo für dein Image herausfinden.