From 183734a104a95bb99be64a6a262ef947fc979910 Mon Sep 17 00:00:00 2001 From: Weizheng Lu Date: Mon, 18 Nov 2024 19:44:40 +0800 Subject: [PATCH] BLD: Dockerfile for cpu and cuda (#831) --- .github/workflows/docker-cd.yaml | 27 ++++--- .github/workflows/python.yaml | 8 +- .../development/contributing_environment.rst | 6 +- doc/source/getting_started/installation.rst | 53 +++++++++++++- .../development/contributing_environment.po | 4 +- .../user_guide/deployment_kubernetes.po | 16 ++-- .../user_guide/deployment_kubernetes.rst | 2 +- doc/source/user_guide/storage_backend.rst | 10 ++- python/xorbits/deploy/docker/Dockerfile.base | 69 ------------------ .../docker/{Dockerfile => Dockerfile.cpu} | 0 .../xorbits/deploy/docker/Dockerfile.cpu.base | 46 ++++++++++++ python/xorbits/deploy/docker/Dockerfile.cuda | 73 +++++++++++++++++++ .../kubernetes/tests/test_kubernetes.py | 2 +- 13 files changed, 214 insertions(+), 102 deletions(-) delete mode 100644 python/xorbits/deploy/docker/Dockerfile.base rename python/xorbits/deploy/docker/{Dockerfile => Dockerfile.cpu} (100%) create mode 100644 python/xorbits/deploy/docker/Dockerfile.cpu.base create mode 100644 python/xorbits/deploy/docker/Dockerfile.cuda diff --git a/.github/workflows/docker-cd.yaml b/.github/workflows/docker-cd.yaml index a696d820b..513edc321 100644 --- a/.github/workflows/docker-cd.yaml +++ b/.github/workflows/docker-cd.yaml @@ -17,7 +17,8 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [ "3.9", "3.10", "3.11" ] + python-version: [ "3.10", "3.11", "3.12" ] + cuda-version: [ "none", "12.0", "12.5" ] steps: - name: Check out code uses: actions/checkout@v3 @@ -36,7 +37,8 @@ jobs: if: ${{ github.repository == 'xorbitsai/xorbits' }} env: DOCKER_ORG: ${{ secrets.DOCKERHUB_USERNAME }} - PY_VERSION: ${{ matrix.python-version }} + PYTHON_VERSION: ${{ matrix.python-version }} + CUDA_VERSION: ${{ matrix.cuda-version }} run: | if [[ "$GITHUB_REF" =~ ^"refs/tags/" ]]; then export GIT_TAG=$(echo "$GITHUB_REF" | sed -e "s/refs\/tags\///g") @@ -65,21 +67,28 @@ jobs: git checkout $branch export IMAGE_TAG="nightly-$branch" fi - docker build -t "xprobe/xorbits:base-py$PY_VERSION" --progress=plain -f python/xorbits/deploy/docker/Dockerfile.base . --build-arg PYTHON_VERSION=$PY_VERSION - docker build -t "$DOCKER_ORG/xorbits:${IMAGE_TAG}-py${PY_VERSION}" --progress=plain -f python/xorbits/deploy/docker/Dockerfile . --build-arg PYTHON_VERSION=$PY_VERSION - docker push "xprobe/xorbits:base-py$PY_VERSION" - docker push "$DOCKER_ORG/xorbits:${IMAGE_TAG}-py${PY_VERSION}" + if [[ "$CUDA_VERSION" == "none" ]]; then + # Build CPU image + docker build -t "$DOCKER_ORG/xorbits:base-py${PYTHON_VERSION}" --progress=plain -f python/xorbits/deploy/docker/Dockerfile.cpu.base . --build-arg PYTHON_VERSION=$PYTHON_VERSION + docker push "$DOCKER_ORG/xorbits:base-py${PYTHON_VERSION}" + docker build -t "$DOCKER_ORG/xorbits:${IMAGE_TAG}-py${PYTHON_VERSION}" --progress=plain -f python/xorbits/deploy/docker/Dockerfile.cpu . --build-arg PYTHON_VERSION=$PYTHON_VERSION + docker push "$DOCKER_ORG/xorbits:${IMAGE_TAG}-py${PYTHON_VERSION}" + else + # Build GPU image + docker build -t "$DOCKER_ORG/xorbits:${IMAGE_TAG}-cuda${CUDA_VERSION}-py${PYTHON_VERSION}" --progress=plain -f python/xorbits/deploy/docker/Dockerfile.cuda . --build-arg PYTHON_VERSION=$PYTHON_VERSION --build-arg CUDA_VERSION=$CUDA_VERSION + docker push "$DOCKER_ORG/xorbits:${IMAGE_TAG}-cuda${CUDA_VERSION}-py${PYTHON_VERSION}" + fi done - name: Set default image shell: bash - if: matrix.python-version == '3.10' + if: matrix.python-version == '3.11' env: DOCKER_ORG: ${{ secrets.DOCKERHUB_USERNAME }} - PY_VERSION: ${{ matrix.python-version }} + PYTHON_VERSION: ${{ matrix.python-version }} run: | if [[ "$GITHUB_REF" =~ ^"refs/tags/" ]]; then export GIT_TAG=$(echo "$GITHUB_REF" | sed -e "s/refs\/tags\///g") - docker tag "$DOCKER_ORG/xorbits:${GIT_TAG}-py${PY_VERSION}" "$DOCKER_ORG/xorbits:${GIT_TAG}" + docker tag "$DOCKER_ORG/xorbits:${GIT_TAG}-py${PYTHON_VERSION}" "$DOCKER_ORG/xorbits:${GIT_TAG}" docker push "$DOCKER_ORG/xorbits:${GIT_TAG}" fi diff --git a/.github/workflows/python.yaml b/.github/workflows/python.yaml index c64f0f727..e5fe57b99 100644 --- a/.github/workflows/python.yaml +++ b/.github/workflows/python.yaml @@ -92,16 +92,16 @@ jobs: - { os: ubuntu-20.04, module: hadoop, python-version: 3.9 } - { os: ubuntu-latest, module: vineyard, python-version: 3.11 } - { os: ubuntu-latest, module: external-storage, python-version: 3.11 } - # always test compatibility with the latest version - # - { os: ubuntu-latest, module: compatibility, python-version: 3.9 } - { os: ubuntu-latest, module: doc-build, python-version: 3.9 } - { os: self-hosted, module: gpu, python-version: 3.11} - { os: ubuntu-latest, module: jax, python-version: 3.9 } + - { os: ubuntu-latest, module: datasets, python-version: 3.9 } + - { os: ubuntu-latest, module: kubernetes, python-version: 3.11 } # a self-hosted runner which needs computing resources, activate when necessary # - { os: juicefs-ci, module: kubernetes-juicefs, python-version: 3.9 } # - { os: ubuntu-latest, module: slurm, python-version: 3.9 } - - { os: ubuntu-latest, module: datasets, python-version: 3.9 } - - { os: ubuntu-latest, module: kubernetes, python-version: 3.11 } + # always test compatibility with the latest version + # - { os: ubuntu-latest, module: compatibility, python-version: 3.9 } steps: - name: Check out code uses: actions/checkout@v3 diff --git a/doc/source/development/contributing_environment.rst b/doc/source/development/contributing_environment.rst index f854d90a2..9c83ebe35 100644 --- a/doc/source/development/contributing_environment.rst +++ b/doc/source/development/contributing_environment.rst @@ -106,7 +106,7 @@ For the image tag prefixes, ``nightly-main`` represents the latest code from `Xo while ``v`` represents version numbers for each release. You can choose to pull the image based on your specific requirements. -If you indeed need to manually build Xorbits image, Xorbits provides a ``DockerFile`` in the ``python/xorbits/deploy/docker`` directory to build a Docker image +If you indeed need to manually build Xorbits image, Xorbits provides a ``Dockerfile`` in the ``python/xorbits/deploy/docker`` directory to build a Docker image with a full Xorbits development environment. **Docker Commands** @@ -117,7 +117,7 @@ Build the Docker image:: $ cd xorbits # Build the image - docker build -t xorbits-dev --progress=plain -f python/xorbits/deploy/docker/Dockerfile . --build-arg PYTHON_VERSION= + docker build -t xorbits-dev --progress=plain -f python/xorbits/deploy/docker/Dockerfile.cpu . --build-arg PYTHON_VERSION= Run Container:: @@ -130,7 +130,7 @@ Run Container:: **Visual Studio Code** -You can use the DockerFile to launch a remote session with Visual Studio Code, +You can use the Dockerfile to launch a remote session with Visual Studio Code, a popular free IDE, using the ``.devcontainer.json`` file. See https://code.visualstudio.com/docs/remote/containers for details. diff --git a/doc/source/getting_started/installation.rst b/doc/source/getting_started/installation.rst index f252edca4..202930558 100644 --- a/doc/source/getting_started/installation.rst +++ b/doc/source/getting_started/installation.rst @@ -10,19 +10,23 @@ Xorbits can be installed via pip from `PyPI `_ pip install xorbits - -.. _install.version: +It will install the latest version of Xorbits and dependencies like ``pandas``, ``numpy``, etc. +We recommend you to use environment management tools like ``conda`` or ``venv`` to create +a new environment. ``conda`` will install the pre-compiled packages, while ``pip`` will +install the wheel (which is pre-compiled) or compile the packages from source code if no wheel +is available. Python version support ---------------------- -Officially Python 3.9, 3.10, 3.11, and 3.12. +Officially support Python 3.9, 3.10, 3.11, and 3.12. Packages support ---------------- Xorbits partitions large datasets into chunks and processes each individual -chunk using single-node packages (such as pandas). Currently, our latest version strives +chunk using single-node packages (such as pandas). +Currently, our latest version strives to be compatible with the latest single-node packages. The table below lists the highest versions of the single-node packages that Xorbits are compatible with. If you are using an older version of pandas, you should either upgrade your pandas or downgrade Xorbits. @@ -40,6 +44,37 @@ Xorbits Python `NumPy`_ `pandas`_ `xgboost`_ `lightgbm`_ `datasets` .. _`lightgbm`: https://lightgbm.readthedocs.io .. _`datasets`: https://huggingface.co/docs/datasets/index +GPU support +----------- + +Xorbits can also scale GPU-accelerated data science tools like `CuPy`_ and `cuDF`_. To enable GPU support, you need to install +GPU-accelerated packages. As GPU software stacks (i.e.,GPU driver, CUDA, etc.) +are complicated from CPU, you need to make sure NVIDIA driver and CUDA toolkit are properly installed. +We recommend you to use ``conda`` to install ``cuDF`` first, it will install both ``cudf`` and ``cupy``, +and then install ``xorbits`` with ``pip``. +``conda`` will help resolve the dependencies of ``cuDF`` and provides supporting software like CUDA. +Refer to `RAPIDS_INSTALL_DOCS`_ for more details about how to install ``cuDF``. + +When using Xorbits with GPU, you need to add the :code:`gpu=True` parameter to the data loading method. +For example: + +.. code-block:: python + + import xorbits.pandas as pd + df = pd.read_parquet(path, gpu=True) + +======= =================== ======== ========= +Xorbits Python `CuPy`_ `cuDF`_ +======= =================== ======== ========= +0.8.1 3.10,3.11,3.12 13.3.0 24.10 +======= =================== ======== ========= + +If you find installing GPU-accelerated packages too complicated, you can use our docker images +with pre-installed GPU drivers and CUDA toolkit. Please refer to :ref:`docker` for more details. + +.. _`Cupy`: https://cupy.dev +.. _`cuDF`: https://docs.rapids.ai/api/cudf/stable/ +.. _`RAPIDS_INSTALL_DOCS`: https://docs.rapids.ai/install/ Dependencies ------------ @@ -89,3 +124,13 @@ The following extra dependencies will be installed. library. * `fsspec `__: for cloud data accessing. + +.. _docker: +Docker image +------------ + +To simplify the installation of Xorbits, we provide docker images with pre-installed +Xorbits and its dependencies. + +* CPU image: ``xprobe/xorbits:v{version}-py{python_version}``, e.g., ``xprobe/xorbits:v0.8.0-py3.12`` +* GPU image: ``xprobe/xorbits:v{version}-cuda{cuda_version}-py{python_version}``, e.g., ``xprobe/xorbits:v0.8.0-cuda12.0-py3.12`` diff --git a/doc/source/locale/zh_CN/LC_MESSAGES/development/contributing_environment.po b/doc/source/locale/zh_CN/LC_MESSAGES/development/contributing_environment.po index 21f167c69..a39d79a9a 100644 --- a/doc/source/locale/zh_CN/LC_MESSAGES/development/contributing_environment.po +++ b/doc/source/locale/zh_CN/LC_MESSAGES/development/contributing_environment.po @@ -223,7 +223,7 @@ msgstr "" #: ../../source/development/contributing_environment.rst:112 msgid "" "If you indeed need to manually build Xorbits image, Xorbits provides a " -"``DockerFile`` in the ``python/xorbits/deploy/docker`` directory to build" +"``Dockerfile`` in the ``python/xorbits/deploy/docker`` directory to build" " a Docker image with a full Xorbits development environment." msgstr "" "如果你真的需要手动构建镜像,Xorbits 在 ``python/xorbits/deploy/docker`` 目录下提供了一个 Dockerfile 用以构建包含完备开发环境的镜像。" @@ -254,7 +254,7 @@ msgstr "" #: ../../source/development/contributing_environment.rst:136 msgid "" -"You can use the DockerFile to launch a remote session with Visual Studio " +"You can use the Dockerfile to launch a remote session with Visual Studio " "Code, a popular free IDE, using the ``.devcontainer.json`` file. See " "https://code.visualstudio.com/docs/remote/containers for details." msgstr "" diff --git a/doc/source/locale/zh_CN/LC_MESSAGES/user_guide/deployment_kubernetes.po b/doc/source/locale/zh_CN/LC_MESSAGES/user_guide/deployment_kubernetes.po index 876081570..8f0f40f0e 100644 --- a/doc/source/locale/zh_CN/LC_MESSAGES/user_guide/deployment_kubernetes.po +++ b/doc/source/locale/zh_CN/LC_MESSAGES/user_guide/deployment_kubernetes.po @@ -161,14 +161,14 @@ msgstr "自 ``v0.2.1`` 起,Xorbits 镜像不再支持 Python ``3.7``,同时 #: ../../source/user_guide/deployment_kubernetes.rst:82 msgid "" "If you need to build an image from source, the related Dockerfiles exists" -" at `this position `_ for reference. You " +" at `this position `_ for reference. You " "can follow the `Docker document " "`_ to build " "your own Xorbits image." msgstr "" -"如果你希望从源码制作一个镜像,可以参考我们的 `Dockerfile `_ 和 `Docker 构建文档 " +"如果你希望从源码制作一个镜像,可以参考我们的 `Dockerfile `_ 和 `Docker 构建文档 " "`_ 进行制作。" #: ../../source/user_guide/deployment_kubernetes.rst:85 @@ -192,15 +192,15 @@ msgstr "安装 Python 包" #: ../../source/user_guide/deployment_kubernetes.rst:94 msgid "" -"Refer `DockerFile `_ for" +"Refer `Dockerfile `_ for" " the python packages included in the Xorbits image. If you want to " "install additional python packages in your Xorbits K8s cluster, use " "``pip`` and ``conda`` options of the " ":meth:`xorbits.deploy.kubernetes.client.new_cluster` api." msgstr "" -"Xorbits 的发布镜像中已经包含了一些 Python 包,参考 `DockerFile `_ " +"Xorbits 的发布镜像中已经包含了一些 Python 包,参考 `Dockerfile `_ " "中安装内容。如果你想安装额外的 Python 包或者改变其中某些包的版本,使用 " ":meth:`xorbits.deploy.kubernetes.client.new_cluster` 接口中的 ``pip`` 和 " "``conda`` 选项即可。" diff --git a/doc/source/user_guide/deployment_kubernetes.rst b/doc/source/user_guide/deployment_kubernetes.rst index 32dd6f930..60d20578e 100644 --- a/doc/source/user_guide/deployment_kubernetes.rst +++ b/doc/source/user_guide/deployment_kubernetes.rst @@ -91,7 +91,7 @@ Finally, specify your own image during the deployment process through the ``imag Install Python Packages ----------------------- -Refer `DockerFile `_ for the python packages included in the Xorbits image. +Refer `Dockerfile `_ for the python packages included in the Xorbits image. If you want to install additional python packages in your Xorbits K8s cluster, use ``pip`` and ``conda`` options of the :meth:`xorbits.deploy.kubernetes.client.new_cluster` api. Please make sure your K8s cluster can access the corresponding `channel of conda `_ or `PyPi `_, when using ``pip`` and ``conda`` options. diff --git a/doc/source/user_guide/storage_backend.rst b/doc/source/user_guide/storage_backend.rst index d89a1e956..a3e8f2767 100644 --- a/doc/source/user_guide/storage_backend.rst +++ b/doc/source/user_guide/storage_backend.rst @@ -99,7 +99,15 @@ If you want to run tasks on GPUs, add the :code:`gpu=True` parameter to the data .. code-block:: python import xorbits.pandas as pd - pd.read_parquet(path, gpu=True) + import xorbits.numpy as np + + df = pd.read_parquet(path, gpu=True) + ... + + a = np.ones((1000, 1000), gpu=True) + b = np.ones((1000, 1000), gpu=True) + c = np.matmul(a, b) + ... All subsequent operations will run on GPUs. \ No newline at end of file diff --git a/python/xorbits/deploy/docker/Dockerfile.base b/python/xorbits/deploy/docker/Dockerfile.base deleted file mode 100644 index aade74b89..000000000 --- a/python/xorbits/deploy/docker/Dockerfile.base +++ /dev/null @@ -1,69 +0,0 @@ -ARG BASE_CONTAINER=continuumio/miniconda3:23.10.0-1 -ARG PYTHON_VERSION=3.9 -FROM ${BASE_CONTAINER} AS base - -FROM base AS py3.9-base -SHELL ["/bin/bash", "-c"] -RUN if [ "$PYTHON_VERSION" == "3.9" ] ; then \ - /opt/conda/bin/conda install python=3.9 && \ - /opt/conda/bin/conda install -c conda-forge -c rapidsai ucx-proc=*=cpu ucx ucx-py ; fi - -FROM base AS py3.10-base -SHELL ["/bin/bash", "-c"] -RUN if [ "$PYTHON_VERSION" == "3.10" ] ; then \ - /opt/conda/bin/conda install python=3.10 && \ - /opt/conda/bin/conda install -c conda-forge -c rapidsai ucx-proc=*=cpu ucx ucx-py ; fi - -FROM base AS py3.11-base -SHELL ["/bin/bash", "-c"] -RUN if [ "$PYTHON_VERSION" == "3.11" ] ; then \ - /opt/conda/bin/conda install python=3.11 && \ - /opt/conda/bin/conda install -c conda-forge -c rapidsai ucx-proc=*=cpu ucx ucx-py ; fi - -FROM py${PYTHON_VERSION}-base AS final -RUN /opt/conda/bin/conda install -c conda-forge --solver classic \ - cython \ - mkl \ - numexpr\<2.8.5 \ - psutil \ - scikit-learn \ - sqlalchemy \ - tornado \ - lz4 \ - && /opt/conda/bin/conda install -c conda-forge --solver classic \ - pyarrow\>=1.0 \ - python-kubernetes \ - jax \ - jaxlib \ - uvloop \ - libnuma \ - && pip install -U pip \ - && pip install -U \ - numpy \ - scipy\>=1.9.2 \ - pandas\>=1.5.0 \ - xoscar \ - cloudpickle \ - azure-storage-blob>=12.18.1 \ - adlfs \ - fsspec>=2022.7.1,!=2022.8.0 \ - s3fs \ - pyopenssl>=23.0.0 \ - datasets \ - && /opt/conda/bin/conda clean --all -f -y - -ENV NVM_DIR /usr/local/nvm -ENV NODE_VERSION 14.21.1 - -RUN apt-get -y update \ - && apt install -y curl procps gcc g++ \ - && mkdir -p $NVM_DIR \ - && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash \ - && . $NVM_DIR/nvm.sh \ - && nvm install $NODE_VERSION \ - && nvm alias default $NODE_VERSION \ - && nvm use default \ - && apt-get -yq clean \ - && rm -rf /var/lib/apt/lists/* - -ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH diff --git a/python/xorbits/deploy/docker/Dockerfile b/python/xorbits/deploy/docker/Dockerfile.cpu similarity index 100% rename from python/xorbits/deploy/docker/Dockerfile rename to python/xorbits/deploy/docker/Dockerfile.cpu diff --git a/python/xorbits/deploy/docker/Dockerfile.cpu.base b/python/xorbits/deploy/docker/Dockerfile.cpu.base new file mode 100644 index 000000000..e1e8175e4 --- /dev/null +++ b/python/xorbits/deploy/docker/Dockerfile.cpu.base @@ -0,0 +1,46 @@ +FROM continuumio/miniconda3:24.9.2-0 AS base + +ARG PYTHON_VERSION=3.9 +SHELL ["/bin/bash", "-c"] + +RUN apt-get -y update \ + && apt-get install -y \ + curl \ + procps \ + gcc \ + g++ \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN conda install python=${PYTHON_VERSION} \ + nodejs=20.17 \ + conda-forge::mkl \ + conda-forge::libnuma \ + && conda clean --all -f -y +# TODO: UCXX is not mature enough for production, add it back when it's ready + +RUN pip install -U \ + numpy \ + scipy \ + pandas \ + numexpr \ + psutil \ + scikit-learn \ + sqlalchemy \ + tornado \ + xoscar \ + pyarrow \ + cloudpickle \ + azure-storage-blob \ + adlfs \ + fsspec \ + s3fs \ + pyopenssl \ + datasets \ + python-kubernetes \ + jax \ + uvloop \ + Cython + +RUN if [ "$PYTHON_VERSION" == "3.9" ] ; then \ + pip install -U 'setuptools<64' ; fi diff --git a/python/xorbits/deploy/docker/Dockerfile.cuda b/python/xorbits/deploy/docker/Dockerfile.cuda new file mode 100644 index 000000000..c1dc1063d --- /dev/null +++ b/python/xorbits/deploy/docker/Dockerfile.cuda @@ -0,0 +1,73 @@ +ARG PYTHON_VERSION=3.11 +ARG CUDA_VERSION=12.0 +ARG BASE_CONTAINER=rapidsai/base:24.10-cuda${CUDA_VERSION}-py${PYTHON_VERSION} +FROM ${BASE_CONTAINER} AS base + +ARG PYTHON_VERSION=3.11 +USER root + +SHELL ["/bin/bash", "-c"] + +RUN apt-get -y update \ + && apt-get install -y \ + curl \ + procps \ + gcc \ + g++ \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN conda install conda-forge::libnuma \ + && conda clean --all -f -y + +RUN pip install \ + numpy \ + scipy \ + pandas \ + numexpr \ + psutil \ + scikit-learn \ + sqlalchemy \ + tornado \ + xoscar \ + pyarrow \ + cloudpickle \ + azure-storage-blob \ + adlfs \ + fsspec \ + s3fs \ + pyopenssl \ + datasets \ + python-kubernetes \ + uvloop \ + Cython + +RUN if [[ "$PYTHON_VERSION" < "3.12" ]] ; then \ + pip install -U 'setuptools<64' ; fi + +# Copy Xorbits files +COPY . /opt/xorbits/ + +# Build extensions +RUN cd /opt/xorbits/python && \ + if [ "$PYTHON_VERSION" == "3.11" ] ; \ + then CFLAGS="-DCYTHON_FAST_THREAD_STATE=0" python setup.py build_ext -i ; \ + else python setup.py build_ext -i ; fi && \ + npm cache clean --force && \ + python setup.py build_web && \ + rm -rf /opt/xorbits/python/xorbits/web/ui/node_modules + +# Setup service directory +RUN mkdir -p /srv +WORKDIR /srv + +# Copy and setup entrypoint scripts +RUN cp /opt/xorbits/python/xorbits/deploy/docker/entrypoint.sh /srv/entrypoint.sh && \ + cp /opt/xorbits/python/xorbits/deploy/docker/install.sh /srv/install.sh && \ + chmod a+x /srv/*.sh + +# Set Python path +ENV PYTHONPATH "${PYTHONPATH}:/opt/xorbits:/opt/xorbits/python" + +# Set entrypoint +ENTRYPOINT [ "/srv/entrypoint.sh" ] diff --git a/python/xorbits/deploy/kubernetes/tests/test_kubernetes.py b/python/xorbits/deploy/kubernetes/tests/test_kubernetes.py index ae94434ff..c93807526 100644 --- a/python/xorbits/deploy/kubernetes/tests/test_kubernetes.py +++ b/python/xorbits/deploy/kubernetes/tests/test_kubernetes.py @@ -84,7 +84,7 @@ def _collect_coverage(): def _build_docker_images(py_version: str): image_name = "xorbits-test-image:" + uuid.uuid1().hex xorbits_root = XORBITS_ROOT + "/" - docker_file_path = os.path.join(DOCKER_ROOT, "Dockerfile")[len(xorbits_root) :] + docker_file_path = os.path.join(DOCKER_ROOT, "Dockerfile.cpu")[len(xorbits_root) :] try: build_proc = subprocess.Popen( [