1+ FROM docker.io/vllm/vllm-openai:v0.10.2 AS base
2+ ARG PYTHON="python3"
3+ LABEL maintainer="Amazon AI"
4+ ARG EFA_VERSION="1.43.3"
5+ LABEL dlc_major_version="1"
6+ ENV DEBIAN_FRONTEND=noninteractive \
7+ LANG=C.UTF-8 \
8+ LC_ALL=C.UTF-8 \
9+ DLC_CONTAINER_TYPE=base \
10+ # Python won’t try to write .pyc or .pyo files on the import of source modules
11+ # Force stdin, stdout and stderr to be totally unbuffered. Good for logging
12+ PYTHONDONTWRITEBYTECODE=1 \
13+ PYTHONUNBUFFERED=1 \
14+ PYTHONIOENCODING=UTF-8 \
15+ LD_LIBRARY_PATH="/usr/local/lib:/opt/amazon/ofi-nccl/lib/x86_64-linux-gnu:/opt/amazon/openmpi/lib:/opt/amazon/efa/lib:/usr/local/cuda/lib64:${LD_LIBRARY_PATH}" \
16+ PATH="/opt/amazon/openmpi/bin:/opt/amazon/efa/bin:/usr/local/cuda/bin:${PATH}"
17+
18+ WORKDIR /
19+
20+ COPY ./scripts/telemetry/deep_learning_container.py /usr/local/bin/deep_learning_container.py
21+ COPY ./scripts/telemetry/bash_telemetry.sh /usr/local/bin/bash_telemetry.sh
22+ COPY ./scripts/setup_oss_compliance.sh setup_oss_compliance.sh
23+
24+ RUN chmod +x /usr/local/bin/deep_learning_container.py \
25+ && chmod +x /usr/local/bin/bash_telemetry.sh \
26+ && echo 'source /usr/local/bin/bash_telemetry.sh' >>/etc/bash.bashrc \
27+ && bash setup_oss_compliance.sh ${PYTHON} && rm setup_oss_compliance.sh \
28+ # create symlink for python
29+ && ln -s /usr/bin/python3 /usr/bin/python \
30+ # clean up
31+ && rm -rf ${HOME_DIR}/oss_compliance* \
32+ && rm -rf /tmp/tmp* \
33+ && rm -rf /tmp/uv* \
34+ && rm -rf /var/lib/apt/lists/* \
35+ && rm -rf /root/.cache | true
36+
37+ COPY ./scripts/install_efa.sh install_efa.sh
38+ RUN bash install_efa.sh ${EFA_VERSION} \
39+ && rm install_efa.sh \
40+ && mkdir -p /tmp/nvjpeg \
41+ && cd /tmp/nvjpeg \
42+ && wget https://developer.download.nvidia.com/compute/cuda/redist/libnvjpeg/linux-x86_64/libnvjpeg-linux-x86_64-12.4.0.76-archive.tar.xz \
43+ && tar -xvf libnvjpeg-linux-x86_64-12.4.0.76-archive.tar.xz \
44+ && rm -rf /usr/local/cuda/targets/x86_64-linux/lib/libnvjpeg* \
45+ && rm -rf /usr/local/cuda/targets/x86_64-linux/include/nvjpeg.h \
46+ && cp libnvjpeg-linux-x86_64-12.4.0.76-archive/lib/libnvjpeg* /usr/local/cuda/lib64/ \
47+ && cp libnvjpeg-linux-x86_64-12.4.0.76-archive/include/* /usr/local/cuda/include/ \
48+ && rm -rf /tmp/nvjpeg \
49+ # remove cuobjdump and nvdisasm
50+ && rm -rf /usr/local/cuda/bin/cuobjdump* \
51+ && rm -rf /usr/local/cuda/bin/nvdisasm*
52+
53+ # ====================== ray serve =========================================
54+ FROM base AS vllm-rayserve-ec2
55+
56+ RUN uv pip install --system ray[serve]==2.49.0 \
57+ && uv cache clean
58+
59+ ARG CACHE_REFRESH=0
60+ RUN dpkg -l | grep -E "cuda|nvidia|libnv" | awk '{print $2}' | xargs apt-mark hold \
61+ && apt-get update \
62+ && apt-get upgrade -y \
63+ && apt-get clean
64+
65+ COPY ./scripts/dockerd_entrypoint.sh /usr/local/bin/dockerd_entrypoint.sh
66+ RUN chmod +x /usr/local/bin/dockerd_entrypoint.sh
67+
68+ ENTRYPOINT ["/usr/local/bin/dockerd_entrypoint.sh"]
0 commit comments