/
alexefan136
/
flowstack
Обзор
Документация
Войти
/
alexefan136
/
flowstack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
core/rag/Dockerfile
82 строки
3 KB
Alexander Efanov
upd fix
29 июл 2026, 23:26
29 июл 2026, 23:26
d8ac8ee
Код
Авторство
О чём код?
# syntax=docker/dockerfile:1.6 # ============================================================================ # FlowStack RAG Service — Multi-Arch Rust/Axum RAG с Qdrant # Сборка на Mac для linux/amd64 и linux/arm64 # ============================================================================ # ---------- Stage 1: Chef (BUILDPLATFORM) ---------- FROM --platform=$BUILDPLATFORM rust:1.95-bookworm AS chef RUN cargo install cargo-chef --locked WORKDIR /app # ---------- Stage 2: Planner (BUILDPLATFORM) ---------- FROM --platform=$BUILDPLATFORM chef AS planner COPY . . RUN cargo chef prepare --recipe-path recipe.json # ---------- Stage 3: Builder (TARGETPLATFORM) ---------- FROM --platform=$TARGETPLATFORM rust:1.95-bookworm AS builder RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config \ libssl-dev \ binutils \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # ✅ cargo-chef устанавливается нативно под целевую архитектуру RUN cargo install cargo-chef --locked # Копируем recipe.json COPY --from=planner /app/recipe.json recipe.json # Собираем зависимости (кэшируется!) RUN cargo chef cook --release --recipe-path recipe.json # Копируем исходники (исключаем target/ через .dockerignore) COPY --from=planner /app/src ./src COPY --from=planner /app/Cargo.toml ./Cargo.toml COPY --from=planner /app/Cargo.lock ./Cargo.lock # Собираем release binary под целевую архитектуру RUN cargo build --release --bin flowstack-rag # Strip для уменьшения размера RUN strip target/release/flowstack-rag # ---------- Stage 4: Runtime (TARGETPLATFORM) ---------- FROM --platform=$TARGETPLATFORM debian:bookworm-slim AS runtime RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ openssl \ tini \ && rm -rf /var/lib/apt/lists/* \ && update-ca-certificates RUN groupadd --gid 1001 flowstack \ && useradd --uid 1001 --gid flowstack --shell /bin/bash --create-home flowstack RUN mkdir -p /app/data /app/logs \ && chown -R flowstack:flowstack /app WORKDIR /app COPY --from=builder --chown=flowstack:flowstack /app/target/release/flowstack-rag /app/flowstack-rag RUN chmod +x /app/flowstack-rag USER flowstack EXPOSE 8000 ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["/app/flowstack-rag"] LABEL org.opencontainers.image.title="FlowStack RAG Service" \ org.opencontainers.image.description="Production-grade RAG service (multi-arch)" \ org.opencontainers.image.vendor="FlowStack" \ org.opencontainers.image.version="1.0.0"