FROM rust:1-bookworm AS builder WORKDIR /work COPY Cargo.toml Cargo.lock rust-toolchain.toml deny.toml ./ COPY .cargo ./.cargo COPY crates ./crates COPY xtask ./xtask RUN rustup toolchain install nightly --profile minimal --component rust-src && \ cargo +nightly build -Zbuild-std=std,panic_abort --release -p aria2-rust-pro-cli --bin aria2-rust-pro FROM debian:bookworm-slim RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ bash \ ca-certificates \ curl \ gosu \ rclone && \ rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /work/target/release/aria2-rust-pro /usr/local/bin/aria2-rust-pro RUN ln -s /usr/local/bin/aria2-rust-pro /usr/local/bin/aria2c COPY docker/entrypoint.sh /usr/local/bin/aria2-rust-pro-entrypoint COPY docker/defaults /defaults RUN chmod 755 /usr/local/bin/aria2-rust-pro-entrypoint /usr/local/bin/aria2-rust-pro && \ find /defaults -type f -name '*.sh' -exec chmod 755 {} + && \ mkdir -p /config /downloads /run/aria2-rust-pro ENV CONFIG_DIR=/config \ DOWNLOAD_DIR=/downloads \ PUID= \ PGID= \ UMASK_SET=022 \ RPC_SECRET= \ RPC_PORT=6800 \ LISTEN_PORT=6888 \ DISK_CACHE=64M \ IPV6_MODE=false \ UPDATE_TRACKERS=false \ CUSTOM_TRACKER_URL= \ SPECIAL_MODE= VOLUME ["/config", "/downloads"] EXPOSE 6800 6888 6888/udp ENTRYPOINT ["/usr/local/bin/aria2-rust-pro-entrypoint"]