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: