FROM rust:1.93.1-alpine3.23 AS builder RUN --mount=type=cache,target=/root/.cargo \ rustup component add clippy && \ rustup component add rustfmt --toolchain nightly RUN \ cargo install cargo-sort WORKDIR /build COPY . . RUN --mount=type=cache,target=/build/target \ cargo sort ./**/Cargo.toml --check && \ cargo clippy && \ cargo +nightly fmt --check RUN --mount=type=cache,target=/build/target \ mkdir release && \ cargo build --workspace --release && \ cp target/release/master release && \ cp target/release/worker release FROM alpine:3.23 AS master WORKDIR /app COPY --from=builder /build/release/master . WORKDIR /data CMD ["/app/master"] FROM alpine:3.23 AS worker RUN \ apk add --no-cache python3 ffmpeg deno opus RUN \ wget https://github.com/yt-dlp/yt-dlp/releases/download/2026.02.21/yt-dlp -O /usr/local/bin/yt-dlp && \ chmod +x /usr/local/bin/yt-dlp WORKDIR /app COPY --from=builder /build/release/worker . WORKDIR /data CMD ["/app/worker"]