# Dockerfile for cross-platform compilation # Supports building for multiple targets using docker FROM ubuntu:22.04 # Install build essentials RUN apt-get update && apt-get install -y \ build-essential \ curl \ git \ pkg-config \ && rm -rf /var/lib/apt/lists/* # Install Rust RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable ENV PATH="/root/.cargo/bin:${PATH}" # Install cross tool for cross-compilation RUN cargo install cross --locked # Create workspace directory WORKDIR /workspace # Copy entire project COPY . . # Default build target ARG TARGET=x86_64-unknown-linux-gnu ENV BUILD_TARGET="${TARGET}" # Build command RUN cross build --target "${BUILD_TARGET}" --release # Extract binaries to output directory RUN mkdir -p /output/bin && \ find target/"${BUILD_TARGET}"/release -maxdepth 1 -type f -executable -exec cp {} /output/bin/ \; # Create manifest RUN echo "{ \"target\": \"${BUILD_TARGET}\", \"built\": \"$(date -u +'%Y-%m-%dT%H:%M:%SZ')\" }" > /output/BUILD_INFO.json # Default command CMD ["/bin/bash"]