From f37bccce79010f80df125f5c26d7efeee3c4c536 Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Mon, 10 Mar 2025 20:08:25 +0100
Subject: [PATCH] add option to exit container on MQTT disconnect:

---
 Dockerfile         | 3 ++-
 mqttclient/main.go | 5 +++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index c639138..7436f6b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,7 +9,8 @@ COPY ./ ./
 RUN CGO_ENABLED=0 GOOS=linux xx-go build -ldflags "-w -s" -o /ems-esp-logger
 
 FROM jonasled.dev/infra/images/scratch-rootless@sha256:b29ee9170c65f2825d77f1c8d97c6ae138f76fb3a150454eb6eb87e7767fba4b
-ENV UPDATE_INSTALL=false
+ENV UPDATE_INSTALL=false \
+    EXIT_ON_DISCONNECT=true
 COPY --from=build /ems-esp-logger /ems-esp-logger
 ENTRYPOINT ["/ems-esp-logger"]
 
diff --git a/mqttclient/main.go b/mqttclient/main.go
index 4ebed07..7f0092f 100644
--- a/mqttclient/main.go
+++ b/mqttclient/main.go
@@ -43,6 +43,11 @@ var messagePubHandlerBoiler mqtt.MessageHandler = func(client mqtt.Client, msg m
 
 var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) {
 	log.Log.Info("Successfully connected to MQTT broker")
+	if os.Getenv("EXIT_ON_DISCONNECT") == "true" {
+		log.Log.Info("Sleeping 10s before exiting")
+		time.Sleep(10 * time.Second)
+		os.Exit(1)
+	}
 }
 
 var connectLostHandler mqtt.ConnectionLostHandler = func(client mqtt.Client, err error) {
-- 
GitLab