From f192e43374d8fc15857b59e7caf03153516169c2 Mon Sep 17 00:00:00 2001 From: David Beniamine <david.beniamine@tetras-libre.fr> Date: Mon, 4 Nov 2024 11:28:38 +0100 Subject: [PATCH] Kill maintenance mode after timeout --- .env.sample | 2 ++ docker-compose.yml | 4 +++- docker/Dockerfile | 5 +++++ docker/entrypoint.sh | 13 +++++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile create mode 100755 docker/entrypoint.sh diff --git a/.env.sample b/.env.sample index 451e827..7a4a3bd 100644 --- a/.env.sample +++ b/.env.sample @@ -1,3 +1,5 @@ +# TIMEOUT in minutes after which the service will automatically stop, 90 minutes if not set +TIMEOUT= # Hosts to put down ex `dev.tetras-lab.io`,`reporting.tetras-lab.io` HOSTS= # Hosts to put down ex `127.0.0.1`,`109.190.86.26` diff --git a/docker-compose.yml b/docker-compose.yml index b2478d2..5491139 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: maintenance: - image: nginx + build: docker volumes: - "./www:/usr/share/nginx/html:ro" - "./nginx.conf:/etc/nginx/nginx.conf:ro" @@ -16,6 +16,8 @@ services: - "traefik.http.routers.maintenance.entrypoints=web,websecure" - "traefik.http.routers.maintenance.middlewares=hardening@docker" - "traefik.http.routers.maintenance.priority=99999" + environment: + TIMEOUT: networks: traefik: diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..417ca0b --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:latest + +COPY entrypoint.sh /entrypoint.sh + +ENTRYPOINT '/entrypoint.sh' diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 0000000..67a7d00 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [ -z "$TIMEOUT" ]; then + TIMEOUT=90 +fi + +/docker-entrypoint.sh $@ & +while [[ $TIMEOUT -gt 0 ]]; do + echo "Maintenance system is up, timeout in $TIMEOUT minutes" + sleep 60 + TIMEOUT=$(($TIMEOUT - 1)) +done +exit -- GitLab