diff --git a/infra/docker/Dockerfile.ci-builder-cpu b/infra/docker/Dockerfile.ci-builder-cpu new file mode 100644 index 000000000..32a96d812 --- /dev/null +++ b/infra/docker/Dockerfile.ci-builder-cpu @@ -0,0 +1,47 @@ +# CUDA-free CI builder image for Foxhunt service compilation +# ~2-3GB vs ~8GB for the CUDA devel variant (Dockerfile.ci-builder) +# Contains: Rust 1.89, protoc, sccache, git, OpenSSL, clang, mold, lld, make +# Build: docker build -f infra/docker/Dockerfile.ci-builder-cpu -t foxhunt-ci-builder-cpu . +# Push: docker tag foxhunt-ci-builder-cpu rg.fr-par.scw.cloud/foxhunt-ci/ci-builder-cpu:latest +# docker push rg.fr-par.scw.cloud/foxhunt-ci/ci-builder-cpu:latest + +FROM rust:1.89-slim-bookworm + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + curl \ + ca-certificates \ + pkg-config \ + libssl-dev \ + lld \ + clang \ + make \ + perl \ + build-essential \ + libfontconfig1-dev \ + unzip \ + && rm -rf /var/lib/apt/lists/* + +# mold linker — 2-5x faster than lld for final link step on large Rust binaries +RUN curl -fsSL https://github.com/rui314/mold/releases/download/v2.35.1/mold-2.35.1-x86_64-linux.tar.gz \ + | tar xz -C /usr/local --strip-components=1 \ + && chmod +x /usr/local/bin/mold + +# protoc 28.3 (proto3 optional support, matches local dev) +RUN curl -fsSL https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protoc-28.3-linux-x86_64.zip -o /tmp/protoc.zip \ + && unzip -o /tmp/protoc.zip -d /usr/local bin/protoc 'include/*' \ + && rm /tmp/protoc.zip \ + && chmod +x /usr/local/bin/protoc + +# sccache for S3-backed build caching +RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-unknown-linux-musl.tar.gz \ + | tar xz -C /usr/local/bin --strip-components=1 sccache-v0.10.0-x86_64-unknown-linux-musl/sccache \ + && chmod +x /usr/local/bin/sccache + +# clippy pre-installed +RUN rustup component add clippy + +# Verify +RUN rustc --version && cargo --version && git --version && protoc --version && sccache --version && make --version && mold --version