swactor/apps/myelin/node-image/Dockerfile.e2e

51 lines
1.9 KiB
Text
Raw Normal View History

ARG BASE_IMAGE=myelin-node-base:cuda12.6
FROM ${BASE_IMAGE} AS wheel-builder
ARG RUST_TOOLCHAIN=nightly-2026-02-07
ENV PATH=/root/.cargo/bin:${PATH}
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
curl \
pkg-config \
python3 \
python3-dev \
python3-pip && \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
sh -s -- -y --profile minimal --default-toolchain none && \
rustup toolchain install "${RUST_TOOLCHAIN}" --profile minimal --component rustc-dev && \
python3 -m pip install --break-system-packages --no-cache-dir 'maturin>=1.7,<2' && \
rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
COPY . .
RUN --mount=type=cache,id=myelin-e2e-cargo-registry,target=/root/.cargo/registry \
--mount=type=cache,id=myelin-e2e-target,target=/workspace/target \
maturin build \
--manifest-path crates/bindings/python/Cargo.toml \
--release \
--interpreter python3 \
--out /wheel
FROM ${BASE_IMAGE}
ARG MYELIN_NODE_BIN=target/release/myelin-worker
RUN apt-get update && \
apt-get install -y --no-install-recommends python3 python3-pip && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* \
/var/cache/apt/archives/* \
/var/cache/apt/*.bin \
/var/log/apt/* \
/var/log/dpkg.log \
/tmp/* \
/var/tmp/* \
/usr/share/doc/* \
/usr/share/man/* \
/usr/share/info/*
COPY ${MYELIN_NODE_BIN} /usr/local/bin/myelin-node
COPY --from=wheel-builder /wheel/*.whl /tmp/swactor-wheel/
RUN python3 -m pip install --break-system-packages --no-cache-dir /tmp/swactor-wheel/*.whl && \
rm -rf /tmp/swactor-wheel && \
chmod +x /usr/local/bin/myelin-node
COPY apps/myelin/node-image/e2e_python_launcher.py /usr/local/bin/myelin-e2e-python
RUN chmod +x /usr/local/bin/myelin-e2e-python