ARG BASE_IMAGE ARG BASE_IMAGE_TAG ARG ARCH=amd64 ARG ARCH_ALT=x86_64 FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} ARG ARCH ARG ARCH_ALT WORKDIR /workspace COPY . /workspace # etcd ENV ETCD_VERSION="v3.5.21" RUN wget https://github.com/etcd-io/etcd/releases/download/$ETCD_VERSION/etcd-$ETCD_VERSION-linux-${ARCH}.tar.gz -O /tmp/etcd.tar.gz && \ mkdir -p /usr/local/bin/etcd && \ tar -xvf /tmp/etcd.tar.gz -C /usr/local/bin/etcd --strip-components=1 && \ rm /tmp/etcd.tar.gz ENV PATH=/usr/local/bin/etcd/:$PATH # nats RUN wget --tries=3 --waitretry=5 https://github.com/nats-io/nats-server/releases/download/v2.10.28/nats-server-v2.10.28-${ARCH}.deb && \ dpkg -i nats-server-v2.10.28-${ARCH}.deb && rm nats-server-v2.10.28-${ARCH}.deb RUN pip install -r ./container/deps/requirements.txt # Rust build/dev dependencies RUN apt-get update && \ apt-get install --no-install-recommends -y \ gdb \ protobuf-compiler \ cmake \ libssl-dev \ pkg-config \ libclang-dev ARG RUSTARCH=${ARCH_ALT}-unknown-linux-gnu ENV RUSTUP_HOME=/usr/local/rustup \ CARGO_HOME=/usr/local/cargo \ PATH=/usr/local/cargo/bin:$PATH \ RUST_VERSION=1.87.0 # Install Rust using RUSTARCH derived from ARCH_ALT RUN wget --tries=3 --waitretry=5 "https://static.rust-lang.org/rustup/archive/1.28.1/${RUSTARCH}/rustup-init" && \ # TODO: Add SHA check back based on RUSTARCH chmod +x rustup-init && \ ./rustup-init -y --no-modify-path --profile default --default-toolchain $RUST_VERSION --default-host ${RUSTARCH} && \ rm rustup-init && \ chmod -R a+w $RUSTUP_HOME $CARGO_HOME RUN cargo build \ --release \ --locked \ --workspace COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ # Build dynamo wheels RUN uv build --wheel --out-dir /workspace/dist && \ cd /workspace/lib/bindings/python && \ uv build --wheel --out-dir /workspace/dist --python 3.12 RUN mkdir -p /opt/dynamo/bindings/wheels && \ mkdir /opt/dynamo/bindings/lib && \ cp dist/ai_dynamo*cp312*.whl /opt/dynamo/bindings/wheels/ RUN pip install /workspace/dist/ai_dynamo_runtime*cp312*.whl && pip install /workspace/dist/ai_dynamo*any.whl # Copy files for legal compliance COPY ATTRIBUTION* LICENSE /workspace/ ENTRYPOINT ["/opt/nvidia/nvidia_entrypoint.sh"]