From 27c62fa54c2ff6f6d60a855a53395cfc6bb867f6 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Tue, 19 May 2026 07:02:54 +0200 Subject: [PATCH] fix(docker): Dockerfile workspace-aware + db.rs create_if_missing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Contexte de build depuis la racine du workspace Cargo - Rust 1.86 pour edition 2024 - Layer cache avec stubs membres du workspace - Création répertoire /data dans l'image - SQLite create_if_missing(true) pour créer la DB au premier démarrage Co-Authored-By: Claude Sonnet 4.6 --- backend/Dockerfile | 23 ++++++++++++++++++----- backend/src/db.rs | 8 ++++++-- docker-compose.yml | 4 ++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 9de2f3b..3726eb8 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,13 +1,26 @@ -FROM rust:1.82-alpine AS builder +FROM rust:1.86-alpine AS builder RUN apk add --no-cache musl-dev WORKDIR /app -COPY Cargo.toml Cargo.lock* ./ -COPY src ./src -RUN cargo build --release +# Workspace +COPY Cargo.toml Cargo.lock ./ +COPY backend/Cargo.toml ./backend/Cargo.toml +COPY agents/agent-scan-network/Cargo.toml ./agents/agent-scan-network/Cargo.toml +COPY agents/agent-metric/Cargo.toml ./agents/agent-metric/Cargo.toml +# Stubs pour cacher les dépendances +RUN mkdir -p backend/src agents/agent-scan-network/src agents/agent-metric/src \ + && echo 'fn main(){}' > backend/src/main.rs \ + && echo 'fn main(){}' > agents/agent-scan-network/src/main.rs \ + && echo 'fn main(){}' > agents/agent-metric/src/main.rs \ + && cargo build --release -p sentinelmesh-backend +# Sources réelles (les stubs agents restent en place) +COPY backend/src ./backend/src +COPY backend/migrations ./backend/migrations +RUN touch backend/src/main.rs && cargo build --release -p sentinelmesh-backend FROM alpine:3.21 -RUN apk add --no-cache ca-certificates +RUN apk add --no-cache ca-certificates && mkdir -p /data WORKDIR /app COPY --from=builder /app/target/release/sentinelmesh-backend . +COPY --from=builder /app/backend/migrations ./migrations EXPOSE 8080 CMD ["./sentinelmesh-backend"] diff --git a/backend/src/db.rs b/backend/src/db.rs index 050c01f..2f7f47a 100644 --- a/backend/src/db.rs +++ b/backend/src/db.rs @@ -1,9 +1,13 @@ -use sqlx::{sqlite::SqlitePoolOptions, SqlitePool}; +use sqlx::{sqlite::{SqliteConnectOptions, SqlitePoolOptions}, SqlitePool}; +use std::str::FromStr; pub async fn connect(database_url: &str) -> anyhow::Result { + let opts = SqliteConnectOptions::from_str(database_url)? + .create_if_missing(true); + let pool = SqlitePoolOptions::new() .max_connections(5) - .connect(database_url) + .connect_with(opts) .await?; sqlx::migrate!("./migrations").run(&pool).await?; diff --git a/docker-compose.yml b/docker-compose.yml index ba6f125..72db082 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,8 @@ services: backend: build: - context: ./backend - dockerfile: Dockerfile + context: . + dockerfile: backend/Dockerfile image: sentinelmesh-backend:latest container_name: sentinelmesh-backend ports: