# Dockerfile optimisé pour mises à jour rapides (Fast-Path) # Ce Dockerfile assume que les fichiers Flutter Web ont déjà été compilés en local # dans le dossier `build/web`. Seul le serveur Rust est compilé ici. FROM rust:1.98.1-slim-bookworm AS server-builder WORKDIR /server COPY server/Cargo.toml server/Cargo.lock ./ RUN mkdir src && echo 'fn main() {}' > src/main.rs \ && cargo build --release --locked \ && rm -rf src target/release/xtremflow-server* target/release/deps/xtremflow_server* COPY server/src ./src RUN cargo build --release --locked FROM debian:stable-slim # Éviter les prompts à l'installation ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ ffmpeg \ && rm -rf /var/lib/apt/lists/* # Création de l'utilisateur non-root RUN useradd -m xtremuser WORKDIR /app # Création des dossiers de données avec permissions RUN mkdir -p /app/data/logs /app/data/tmp /app/web /app/recordings && \ chown -R xtremuser:xtremuser /app COPY --from=server-builder /server/target/release/xtremflow-server /app/server # Copie des fichiers pré-compilés du frontend (build/web doit exister en local) COPY --chown=xtremuser:xtremuser build/web/ /app/web/ USER xtremuser EXPOSE 8089 CMD ["/app/server", "--port", "8089", "--path", "/app/web"]