From 8763fb557d0d38c1f223eba09627e3f28e618074 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:04:53 +0200 Subject: [PATCH 1/7] Docker healthcheck --- run/check.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 run/check.sh diff --git a/run/check.sh b/run/check.sh new file mode 100644 index 0000000..eb09900 --- /dev/null +++ b/run/check.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -eu + +exit 0 From b3d1539e986bb2a6b9bb567f8790cdf49e8e8ace Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:12:29 +0200 Subject: [PATCH 2/7] Healthcheck --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 88a79c2..b365c88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,6 +36,7 @@ COPY agent/*.sh /agent/ COPY --from=builder /src/serial/main /run/serial.bin RUN ["chmod", "+x", "/run/run.sh"] +RUN ["chmod", "+x", "/run/check.sh"] RUN ["chmod", "+x", "/run/server.sh"] RUN ["chmod", "+x", "/run/serial.bin"] @@ -68,6 +69,6 @@ LABEL org.opencontainers.image.version=${VERSION_ARG} LABEL org.opencontainers.image.url=https://hub.docker.com/r/kroese/virtual-dsm/ LABEL org.opencontainers.image.source=https://github.com/kroese/virtual-dsm/ -HEALTHCHECK --interval=30s --timeout=2s CMD curl -ILfSs http://20.20.20.21:5000/ || exit 1 +HEALTHCHECK --interval=30s --retries=1 CMD /run/check.sh ENTRYPOINT ["/run/run.sh"] From 9f1164ab60ef2e101e08cae082b45550fb09c8db Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:19:19 +0200 Subject: [PATCH 3/7] Healthcheck --- run/check.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/run/check.sh b/run/check.sh index eb09900..e379bc0 100644 --- a/run/check.sh +++ b/run/check.sh @@ -1,4 +1,13 @@ #!/usr/bin/env bash set -eu +PORT=5000 +IP="20.20.20.21" + +if ! curl -m 3 -ILfSs "http://$IP:$PORT/"; then + echo "Failed to reach $IP" + exit 1 +fi + +echo "Healthcheck OK" exit 0 From ae2d269409ad2f41b3adf7f6995b65efa1a631a1 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:26:51 +0200 Subject: [PATCH 4/7] Store IP --- run/network.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/run/network.sh b/run/network.sh index 988af56..11999f5 100644 --- a/run/network.sh +++ b/run/network.sh @@ -179,6 +179,9 @@ else # Configuration for DHCP IP configureDHCP + # Store IP for Docker healthcheck + echo "${DHCP_IP}" > "/var/dsm.ip" + # Display the received IP on port 5000 /run/server.sh 5000 "The location of DSM is http://${DHCP_IP}:5000" > /dev/null & From ff40c3d5ae4ef0ad76c009716e909d954817e3e9 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:30:00 +0200 Subject: [PATCH 5/7] Healthcheck --- run/check.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/run/check.sh b/run/check.sh index e379bc0..da34386 100644 --- a/run/check.sh +++ b/run/check.sh @@ -1,13 +1,18 @@ #!/usr/bin/env bash set -eu +# Docker Healthcheck + PORT=5000 IP="20.20.20.21" +FILE="/var/dsm.ip" +[ -f "$FILE" ] && IP=$(cat "${FILE}") + if ! curl -m 3 -ILfSs "http://$IP:$PORT/"; then echo "Failed to reach $IP" exit 1 fi -echo "Healthcheck OK" +echo "Healthcheck OK for $IP" exit 0 From f6139a75ad1cc45b96092c1ab16ecdf21cb8ce1e Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:33:29 +0200 Subject: [PATCH 6/7] Healthcheck --- run/network.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/run/network.sh b/run/network.sh index 11999f5..cb4e561 100644 --- a/run/network.sh +++ b/run/network.sh @@ -46,6 +46,9 @@ configureDHCP() { echo "ERROR: Cannot retrieve IP from DHCP using MAC ${VM_NET_MAC}" && exit 16 fi + # Store IP for Docker healthcheck + echo "${DHCP_IP}" > "/var/dsm.ip" + ip a flush "${VM_NET_TAP}" TAP_PATH="/dev/tap$( "/var/dsm.ip" + #Create bridge with static IP for the VM guest brctl addbr dockerbridge ip addr add ${VM_NET_IP%.*}.1/24 broadcast ${VM_NET_IP%.*}.255 dev dockerbridge @@ -179,9 +185,6 @@ else # Configuration for DHCP IP configureDHCP - # Store IP for Docker healthcheck - echo "${DHCP_IP}" > "/var/dsm.ip" - # Display the received IP on port 5000 /run/server.sh 5000 "The location of DSM is http://${DHCP_IP}:5000" > /dev/null & From 041735694fbfbea68ece9c09fc59826b8e37d6b8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 08:37:39 +0200 Subject: [PATCH 7/7] Healthcheck --- run/check.sh | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/run/check.sh b/run/check.sh index da34386..88c39b3 100644 --- a/run/check.sh +++ b/run/check.sh @@ -4,15 +4,19 @@ set -eu # Docker Healthcheck PORT=5000 -IP="20.20.20.21" - FILE="/var/dsm.ip" -[ -f "$FILE" ] && IP=$(cat "${FILE}") -if ! curl -m 3 -ILfSs "http://$IP:$PORT/"; then - echo "Failed to reach $IP" +if [ ! -f "${FILE}" ]; then + echo "IP not assigned" exit 1 fi -echo "Healthcheck OK for $IP" +IP=$(cat "${FILE}") + +if ! curl -m 3 -ILfSs "http://${IP}:${PORT}/"; then + echo "Failed to reach ${IP}" + exit 1 +fi + +echo "Healthcheck OK for ${IP}" exit 0