From e19aeadc63b360029afdb65acb1a4a11a1aaa61a Mon Sep 17 00:00:00 2001 From: Gato Date: Mon, 15 Jun 2026 06:47:56 +0200 Subject: [PATCH] fix: ssh Signed-off-by: Gato --- bonsai/.env.example | 8 ++++++-- bonsai/Dockerfile.api | 8 +++++--- bonsai/Dockerfile.webapp | 8 +++++--- bonsai/README.md | 17 +++++++---------- bonsai/docker-compose.yml | 12 ++++++++---- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/bonsai/.env.example b/bonsai/.env.example index 635bf4b..e9479ab 100644 --- a/bonsai/.env.example +++ b/bonsai/.env.example @@ -1,4 +1,8 @@ -# Mot de passe PostgreSQL partagé entre le container db et l'API Spring Boot. -# Copier ce fichier en .env et définir une valeur sécurisée avant de démarrer. +# Copier ce fichier en .env et adapter les valeurs avant de démarrer. # cp .env.example .env + +# Mot de passe PostgreSQL partagé entre le container db et l'API Spring Boot. POSTGRES_PASSWORD=changeme + +# Chemin absolu vers la clé SSH privée ayant accès au dépôt Gitea. +SSH_KEY_PATH=/home/gato/.ssh/id_ed25519 diff --git a/bonsai/Dockerfile.api b/bonsai/Dockerfile.api index bde64c5..fa9edde 100644 --- a/bonsai/Dockerfile.api +++ b/bonsai/Dockerfile.api @@ -2,10 +2,12 @@ FROM eclipse-temurin:25-jdk AS builder RUN apt-get update && apt-get install -y git openssh-client && rm -rf /var/lib/apt/lists/* -RUN mkdir -p /root/.ssh && \ - ssh-keyscan -p 2222 git.goutailler-olivier.com >> /root/.ssh/known_hosts -RUN --mount=type=ssh \ +RUN --mount=type=secret,id=ssh_key \ --mount=type=cache,target=/root/.gradle \ + mkdir -p /root/.ssh && \ + cp /run/secrets/ssh_key /root/.ssh/id_ed25519 && \ + chmod 600 /root/.ssh/id_ed25519 && \ + ssh-keyscan -p 2222 git.goutailler-olivier.com >> /root/.ssh/known_hosts && \ git clone --depth 1 --branch main \ ssh://git@git.goutailler-olivier.com:2222/Gato/Bonsai-api.git /src && \ cd /src && ./gradlew bootJar --no-daemon -q diff --git a/bonsai/Dockerfile.webapp b/bonsai/Dockerfile.webapp index a7715dd..b37911a 100644 --- a/bonsai/Dockerfile.webapp +++ b/bonsai/Dockerfile.webapp @@ -2,10 +2,12 @@ FROM node:22-alpine AS builder RUN apk add --no-cache git openssh -RUN mkdir -p /root/.ssh && \ - ssh-keyscan -p 2222 git.goutailler-olivier.com >> /root/.ssh/known_hosts -RUN --mount=type=ssh \ +RUN --mount=type=secret,id=ssh_key \ --mount=type=cache,target=/root/.npm \ + mkdir -p /root/.ssh && \ + cp /run/secrets/ssh_key /root/.ssh/id_ed25519 && \ + chmod 600 /root/.ssh/id_ed25519 && \ + ssh-keyscan -p 2222 git.goutailler-olivier.com >> /root/.ssh/known_hosts && \ git clone --depth 1 --branch main \ ssh://git@git.goutailler-olivier.com:2222/Gato/Bonsai-webapp.git /src && \ cd /src && npm ci --cache /root/.npm && npm run build diff --git a/bonsai/README.md b/bonsai/README.md index 6c2661a..9197447 100644 --- a/bonsai/README.md +++ b/bonsai/README.md @@ -2,7 +2,7 @@ Stack Docker Compose unifiée pour l'application Bonsai : base de données, API et webapp. -Les images sont **buildées depuis les sources** de la branche `main` de chaque dépôt au moment du build. +Les images sont **buildées depuis les sources** de la branche `main` de chaque dépôt au moment du build. La clé SSH est transmise au build via un secret BuildKit — elle n'est jamais gravée dans les couches de l'image. ## Services @@ -15,7 +15,7 @@ Les images sont **buildées depuis les sources** de la branche `main` de chaque ## Prérequis - Docker avec BuildKit activé (Docker 23+) -- Accès SSH au dépôt Gitea (`git.goutailler-olivier.com:2222`) avec la clé chargée dans l'agent +- Une clé SSH ayant accès au dépôt Gitea (`git.goutailler-olivier.com:2222`) - Réseau Docker externe `proxy` (Traefik) ## Démarrage @@ -23,15 +23,12 @@ Les images sont **buildées depuis les sources** de la branche `main` de chaque ```bash # 1. Configurer les variables d'environnement cp .env.example .env -# Éditer .env et définir POSTGRES_PASSWORD +# Éditer .env : définir POSTGRES_PASSWORD et SSH_KEY_PATH -# 2. S'assurer que la clé SSH est chargée -ssh-add ~/.ssh/ +# 2. Builder les images (clone + compile) +docker compose build -# 3. Builder les images (clone + compile) -docker compose build --ssh default - -# 4. Démarrer la stack +# 3. Démarrer la stack docker compose up -d ``` @@ -40,7 +37,7 @@ docker compose up -d Pour rebuilder depuis le dernier commit de `main` : ```bash -docker compose build --ssh default --no-cache +docker compose build --no-cache docker compose up -d ``` diff --git a/bonsai/docker-compose.yml b/bonsai/docker-compose.yml index c351c13..2edaab2 100644 --- a/bonsai/docker-compose.yml +++ b/bonsai/docker-compose.yml @@ -24,8 +24,8 @@ services: build: context: . dockerfile: Dockerfile.api - ssh: - - default + secrets: + - ssh_key container_name: bonsai-api restart: unless-stopped depends_on: @@ -56,8 +56,8 @@ services: build: context: . dockerfile: Dockerfile.webapp - ssh: - - default + secrets: + - ssh_key container_name: bonsai-webapp restart: unless-stopped depends_on: @@ -81,3 +81,7 @@ networks: proxy: external: true name: proxy + +secrets: + ssh_key: + file: ${SSH_KEY_PATH}