From 2cfe305a9970ad08f54990bb054dfe847f903978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20MUREAU?= Date: Thu, 17 Jul 2025 08:51:53 +0200 Subject: [PATCH] blog article update --- docs/blog.fr.md | 10 +++++----- docs/blog.md | 11 ++++++----- docs/watchtower_logs_by_email-1.png | Bin 29936 -> 0 bytes 3 files changed, 11 insertions(+), 10 deletions(-) delete mode 100644 docs/watchtower_logs_by_email-1.png diff --git a/docs/blog.fr.md b/docs/blog.fr.md index e8fed94..7032518 100644 --- a/docs/blog.fr.md +++ b/docs/blog.fr.md @@ -157,13 +157,13 @@ Interface de déploiement Google Cloud : #### 🔄 Déploiement continu automatisé (NAS uniquement) Pour assurer un **déploiement continu** sur le NAS, il a été choisi d'installer [**Watchtower**](https://containrrr.dev/watchtower/arguments/) pour rester dans un logique d'environnement 100% `docker`. Cet outil surveille toutes les **10 minutes** l’image Docker de l’API (`sentiment_api`) et, en cas de nouvelle version disponible sur DockerHub, redémarre automatiquement le conteneur avec la dernière image. -![alt text](watchtower_docker-1.png) - -> Un **système d’alerte mail** notifie automatiquement toute mise à jour effectuée. -![alt text](watchtower_logs_by_email-1.png) +![Docker Watchtower dans OMV Docker-Compose](watchtower_docker-1.png) Ce mécanisme garantit que la version déployée sur le NAS reste toujours synchronisée avec la dernière version validée par les tests sur GitHub Actions, **sans intervention manuelle**. -![alt text](watchtower_logs-1.png) +![Logs watchtower dans docker (console SSH)](watchtower_logs-1.png) + +Un **système d’alerte mail** notifie automatiquement toute mise à jour effectuée. +![Rapport mail watchtower update sentiment_api](watchtower_logs_by_email.png) --- diff --git a/docs/blog.md b/docs/blog.md index f2eac36..bb1c860 100644 --- a/docs/blog.md +++ b/docs/blog.md @@ -159,13 +159,14 @@ Google Cloud deployment interface: #### 🔄 Automated Continuous Deployment (NAS only) To ensure **continuous deployment** on the NAS, we chose to install [**Watchtower**](https://containrrr.dev/watchtower/arguments/) to maintain a 100% `docker` environment. This tool checks every **10 minutes** the Docker image of the API (`sentiment_api`) and, if a new version is available on DockerHub, automatically restarts the container with the latest image. -![Watchtower Docker](watchtower_docker-1.png) - -> An **email alert system** automatically notifies any update performed. -![Watchtower Logs by Email](watchtower_logs_by_email-1.png) +![Docker Watchtower in OMV Docker-Compose](watchtower_docker-1.png) This mechanism ensures that the version deployed on the NAS always stays synchronized with the latest version validated by GitHub Actions tests, **without manual intervention**. -![Watchtower Logs](watchtower_logs-1.png) +![Logs watchtower in docker (SSH console)](watchtower_logs-1.png) + +An **email alert system** automatically notifies any update performed. +![Watchtower Logs by Email](watchtower_logs_by_email.png) + --- diff --git a/docs/watchtower_logs_by_email-1.png b/docs/watchtower_logs_by_email-1.png deleted file mode 100644 index 9f2084d5d9ae4ced14be9459587717711427643e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29936 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