# Chef FROM rust:1.94 AS chef RUN apt-get update && apt-get install -y --no-install-recommends musl-tools && rm -rf /var/lib/apt/lists/* RUN rustup target add x86_64-unknown-linux-musl RUN cargo install --locked cargo-chef WORKDIR /app COPY Cargo.toml Cargo.lock . RUN mkdir src && touch src/main.rs # Если у вас workspace или несколько крейтов, скопируйте их манифесты тоже: # COPY crates/*/Cargo.toml ./crates/*/ RUN cargo chef prepare --recipe-path /app/recipe.json # Builder FROM chef AS builder COPY --from=chef /app/recipe.json /app/recipe.json RUN cargo chef cook --target x86_64-unknown-linux-musl --release --recipe-path /app/recipe.json ## Если есть rust-toolchain.toml # COPY rust-toolchain.toml rust-toolchain.toml # RUN cargo fetch COPY . . RUN cargo build --target x86_64-unknown-linux-musl --release # Runtime FROM scratch COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/example /usr/local/bin/example CMD ["/usr/local/bin/example"]