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
+```
---