From b9e3188cb4da6c30d27aaf897aadf3e98a93956d Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Tue, 19 May 2026 06:25:20 +0200 Subject: [PATCH] =?UTF-8?q?feat(deploy):=20Docker=20Compose=20production?= =?UTF-8?q?=20+=20script=20d=C3=A9sinstallation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docker-compose.yml : healthcheck, réseau interne, volumes nommés - docker-compose.dev.yml : profil développement (logs debug, restart no) - install/uninstall.sh : arrêt service, suppression binaire + config + unit Co-Authored-By: Claude Sonnet 4.6 --- docker-compose.dev.yml | 16 ++++++++++++++++ docker-compose.yml | 20 +++++++++++++++++++- install/uninstall.sh | 25 +++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 docker-compose.dev.yml create mode 100755 install/uninstall.sh diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..81ec7c8 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,16 @@ +# Profil développement — remplace docker-compose.yml +# Usage : docker compose -f docker-compose.dev.yml up +services: + backend: + build: + context: ./backend + dockerfile: Dockerfile + ports: + - "8080:8080" + volumes: + - ./data:/data + environment: + DATABASE_URL: sqlite:///data/sentinelmesh.sqlite + LISTEN_ADDR: 0.0.0.0:8080 + RUST_LOG: debug + restart: "no" diff --git a/docker-compose.yml b/docker-compose.yml index 64655c7..ba6f125 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,32 @@ services: backend: - build: ./backend + build: + context: ./backend + dockerfile: Dockerfile + image: sentinelmesh-backend:latest + container_name: sentinelmesh-backend ports: - "8080:8080" volumes: - sentinelmesh-data:/data environment: DATABASE_URL: sqlite:///data/sentinelmesh.sqlite + LISTEN_ADDR: 0.0.0.0:8080 RUST_LOG: info restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost:8080/api/v1/health"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s + networks: + - sentinelmesh + +networks: + sentinelmesh: + driver: bridge volumes: sentinelmesh-data: + driver: local diff --git a/install/uninstall.sh b/install/uninstall.sh new file mode 100755 index 0000000..b308e84 --- /dev/null +++ b/install/uninstall.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# Désinstallation d'un agent SentinelMesh +set -euo pipefail + +AGENT_TYPE="${1:-}" +[[ -z "$AGENT_TYPE" ]] && { echo "Usage: $0 "; exit 1; } + +SERVICE_NAME="sentinelmesh-${AGENT_TYPE}" +BINARY="/usr/local/bin/agent-${AGENT_TYPE}" +CONFIG="/etc/sentinelmesh/${AGENT_TYPE}.yaml" +SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" + +[[ "$EUID" -ne 0 ]] && { echo "Erreur : ce script doit être exécuté en root."; exit 1; } + +echo "Désinstallation de ${SERVICE_NAME}…" + +systemctl stop "$SERVICE_NAME" 2>/dev/null && echo " Service arrêté" || true +systemctl disable "$SERVICE_NAME" 2>/dev/null && echo " Service désactivé" || true + +rm -f "$SERVICE_FILE" && echo " Service systemd supprimé" +rm -f "$BINARY" && echo " Binaire supprimé" +rm -f "$CONFIG" && echo " Configuration supprimée" + +systemctl daemon-reload +echo "Désinstallation terminée."