ARG NODE_BASE_IMAGE=docker.m.daocloud.io/library/node:20-bookworm-slim ARG CUDA_BASE_IMAGE=docker.m.daocloud.io/nvidia/cuda:12.1.1-runtime-ubuntu22.04 FROM ${NODE_BASE_IMAGE} AS node20 FROM ${CUDA_BASE_IMAGE} AS builder ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_NO_CACHE_DIR=1 \ PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple \ PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn \ NPM_CONFIG_REGISTRY=https://registry.npmmirror.com WORKDIR /app # Base deps + Python 3.10 RUN sed -i 's|http://archive.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g; s|http://security.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list \ && apt-get -o Acquire::Retries=5 update \ && apt-get -o Acquire::Retries=5 install -y --no-install-recommends --fix-missing \ ca-certificates curl gnupg \ python3.10 python3.10-distutils python3-pip \ ffmpeg fonts-dejavu-core \ && ln -sf /usr/bin/python3.10 /usr/local/bin/python \ && rm -rf /var/lib/apt/lists/* COPY --from=node20 /usr/local /usr/local COPY requirements.txt /app/requirements.txt RUN python3.10 -m pip install -r /app/requirements.txt COPY server/package.json server/package-lock.json /app/server/ RUN cd /app/server && npm ci --omit=dev COPY . /app FROM ${CUDA_BASE_IMAGE} AS runtime ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_NO_CACHE_DIR=1 \ PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple \ PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn \ NPM_CONFIG_REGISTRY=https://registry.npmmirror.com WORKDIR /app RUN sed -i 's|http://archive.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g; s|http://security.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list \ && apt-get -o Acquire::Retries=5 update \ && apt-get -o Acquire::Retries=5 install -y --no-install-recommends --fix-missing \ ca-certificates \ python3.10 python3.10-distutils python3-pip \ ffmpeg fonts-dejavu-core \ && ln -sf /usr/bin/python3.10 /usr/local/bin/python \ && rm -rf /var/lib/apt/lists/* COPY --from=node20 /usr/local /usr/local COPY --from=builder /usr/local/lib/python3.10 /usr/local/lib/python3.10 COPY --from=builder /usr/local/bin /usr/local/bin COPY --from=builder /app /app EXPOSE 3000 CMD ["node", "/app/server/index.js"]