diff --git a/deploy/docker/deploy.sh b/deploy/docker/deploy.sh index 1d15c37..28297fe 100755 --- a/deploy/docker/deploy.sh +++ b/deploy/docker/deploy.sh @@ -8,6 +8,9 @@ export SIRH_IMAGE_TAG="$TAG" echo "==> Deploying sirh:${TAG}..." +echo "==> Enabling maintenance mode..." +touch maintenance.on + echo "==> Pulling image..." docker compose pull @@ -24,5 +27,8 @@ echo "==> Clearing cache..." docker compose exec -T -u www-data app php bin/console cache:clear --env=prod docker compose exec -T -u www-data app php bin/console cache:warmup --env=prod +echo "==> Disabling maintenance mode..." +rm -f maintenance.on + VERSION=$(docker compose exec -T app cat config/version.yaml | grep 'app.version' | awk -F"'" '{print $2}') echo "==> Deployed v${VERSION}" diff --git a/deploy/maintenance.html b/deploy/maintenance.html new file mode 100644 index 0000000..63a9108 --- /dev/null +++ b/deploy/maintenance.html @@ -0,0 +1,50 @@ + + + + + + Maintenance en cours + + + +
+
🛠
+

Maintenance en cours

+

L'application est temporairement indisponible pour mise a jour. Elle sera de retour dans quelques instants.

+
+ + diff --git a/deploy/nginx/sirh-docker.conf b/deploy/nginx/sirh-docker.conf index 7006208..eebc015 100644 --- a/deploy/nginx/sirh-docker.conf +++ b/deploy/nginx/sirh-docker.conf @@ -2,6 +2,23 @@ server { listen 80; server_name sirh.malio-dev.fr; + root /var/www/sirh/public; + + # Maintenance mode : si le fichier maintenance.on existe, renvoyer la page 503 + if (-f /var/www/sirh/maintenance.on) { + return 503; + } + + error_page 503 @maintenance; + + location @maintenance { + rewrite ^(.*)$ /maintenance.html break; + } + + location = /maintenance.html { + internal; + } + location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; diff --git a/doc/deployment-docker.md b/doc/deployment-docker.md index 61e8693..5414aba 100644 --- a/doc/deployment-docker.md +++ b/doc/deployment-docker.md @@ -197,6 +197,23 @@ server { listen 80; server_name sirh.malio-dev.fr; + root /var/www/sirh/public; + + # Maintenance mode + if (-f /var/www/sirh/maintenance.on) { + return 503; + } + + error_page 503 @maintenance; + + location @maintenance { + rewrite ^(.*)$ /maintenance.html break; + } + + location = /maintenance.html { + internal; + } + location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; @@ -207,9 +224,10 @@ server { } ``` -Activer le site : +Copier la page de maintenance et activer le site : ```bash +cp deploy/maintenance.html /var/www/sirh/public/maintenance.html sudo ln -sf /etc/nginx/sites-available/sirh.conf /etc/nginx/sites-enabled/sirh.conf sudo nginx -t && sudo systemctl reload nginx ``` @@ -251,6 +269,8 @@ rm /tmp/sirh.sql ├── config/jwt/ │ ├── private.pem │ └── public.pem +├── public/ +│ └── maintenance.html └── uploads/ ``` @@ -266,7 +286,24 @@ cd /var/www/sirh ./deploy.sh v0.1.61 # deploie une version specifique ``` -C'est tout. Le script pull l'image, redemarre le conteneur, lance les migrations et vide le cache. +Le script active automatiquement la maintenance pendant le deploy et la desactive a la fin. + +--- + +## Maintenance manuelle + +Activer la maintenance (sans deployer) : + +```bash +cd /var/www/sirh +touch maintenance.on +``` + +Desactiver : + +```bash +rm maintenance.on +``` ---