diff --git a/.env.sample b/.env.sample index 451e8270bb3a275e1d179f7be5e455ea8378da21..7a4a3bdbfc4afaa0d132abc52dfbaa4ddcbbc1c3 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 b2478d2fed9656d7ac0c5cb67b3f8c62eac27114..5491139f401a318b01c7bdaf06b88b0b355c12ae 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 0000000000000000000000000000000000000000..417ca0b2d8395bbb7b6ea6cb0eb7284fb830a1b2 --- /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 0000000000000000000000000000000000000000..67a7d001004e1c4ae16fd3126c4c457b24d990c8 --- /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