From 566690df4458132422ae807e0a1f1b9881e753f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=BCske?= Date: Sun, 18 Feb 2024 11:48:04 +0100 Subject: [PATCH] Check container --- main.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index aae5e9f..39ae90c 100644 --- a/main.py +++ b/main.py @@ -6,7 +6,7 @@ container_name_to_restart = os.getenv('CONTAINER_NAME_TO_RESTART') if not container_name_to_restart: print("Die Umgebungsvariable 'CONTAINER_NAME_TO_RESTART' muss gesetzt sein.") - exit(1) + exit(1) # Beendet das Skript mit einem Fehlercode, wenn die Variable nicht gesetzt ist label_key = "ofelia.enabled" label_value = "true" @@ -15,12 +15,12 @@ def restart_container(container_name): try: - # Filtere Container nach dem Service-Namen containers = client.containers.list(filters={"label": f"com.docker.compose.service={container_name}"}) for container in containers: + # Restartet den ersten gefundenen Container und beendet dann die Funktion container.restart() - print(f"Container {container.name} ({container.id}) wurde neu gestartet.") - return # Beendet die Schleife nach dem ersten Neustart + print(f"Container {container.name} wurde neu gestartet.") + return except APIError as e: print(f"Fehler beim Neustarten des Containers {container_name}: {e}") @@ -30,10 +30,13 @@ def handle_event(event): container = client.containers.get(container_id) labels = container.labels - # Überprüfe, ob der Container das spezifische Label hat und nicht der Container ist, der neu gestartet werden soll - if labels.get(label_key) == label_value and container.attrs['Config']['Labels'].get('com.docker.compose.service') != container_name_to_restart: - print(f"Container mit Label {label_key}:{label_value} gestartet: {container.name}") - restart_container(container_name_to_restart) + # Überprüfe, ob das Label vorhanden ist + if labels.get(label_key) == label_value: + container_service_name = container.attrs['Config']['Labels'].get('com.docker.compose.service') + # Überprüfe, ob der gestartete Container nicht der ist, der neu gestartet werden soll + if container_service_name != container_name_to_restart: + print(f"Container mit Label {label_key}:{label_value} gestartet: {container.name}") + restart_container(container_name_to_restart) def main(): print("Skript läuft und hört auf Container-Ereignisse...")