123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/bin/bash
- # shellcheck disable=SC2086
- # This script is for users to build docker images locally. It is most useful for users wishing to edit the
- # base-deps, or ray images. This script is *not* tested.
- GPU=""
- BASE_IMAGE="ubuntu:22.04"
- WHEEL_URL="https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp39-cp39-manylinux2014_x86_64.whl"
- CPP_WHEEL_URL="https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray_cpp-3.0.0.dev0-cp39-cp39-manylinux2014_x86_64.whl"
- PYTHON_VERSION="3.9"
- BUILD_ARGS=()
- while [[ $# -gt 0 ]]; do
- case "$1" in
- --gpu)
- GPU="-gpu"
- BASE_IMAGE="nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04"
- ;;
- --base-image)
- # Override for the base image.
- shift
- BASE_IMAGE="$1"
- ;;
- --no-cache-build)
- BUILD_ARGS+=("--no-cache")
- ;;
- --shas-only)
- # output the SHA sum of each build. This is useful for scripting tests,
- # especially when builds of different versions are running on the same machine.
- # It also can facilitate cleanup.
- OUTPUT_SHA=YES
- BUILD_ARGS+=("-q")
- ;;
- --python-version)
- # Python version to install. e.g. 3.9
- # Changing python versions may require a different wheel.
- # If not provided defaults to 3.9
- shift
- PYTHON_VERSION="$1"
- ;;
- *)
- echo "Usage: build-docker.sh [ --gpu ] [ --base-image ] [ --no-cache-build ] [ --shas-only ] [ --build-development-image ] [ --build-examples ] [ --python-version ]"
- exit 1
- esac
- shift
- done
- export DOCKER_BUILDKIT=1
- # Build base-deps image
- if [[ "$OUTPUT_SHA" != "YES" ]]; then
- echo "=== Building base-deps image ===" >/dev/stderr
- fi
- BUILD_CMD=(
- docker build "${BUILD_ARGS[@]}"
- --build-arg BASE_IMAG="$BASE_IMAGE"
- --build-arg PYTHON_VERSION="${PYTHON_VERSION}"
- -t "rayproject/base-deps:dev$GPU" "docker/base-deps"
- )
- if [[ "$OUTPUT_SHA" == "YES" ]]; then
- IMAGE_SHA="$("${BUILD_CMD[@]}")"
- echo "rayproject/base-deps:dev$GPU SHA:$IMAGE_SHA"
- else
- "${BUILD_CMD[@]}"
- fi
- # Build ray image
- if [[ "$OUTPUT_SHA" != "YES" ]]; then
- echo "=== Building ray image ===" >/dev/stderr
- fi
- RAY_BUILD_DIR="$(mktemp -d)"
- mkdir -p "$RAY_BUILD_DIR/.whl"
- wget --quiet "$WHEEL_URL" -P "$RAY_BUILD_DIR/.whl"
- wget --quiet "$CPP_WHEEL_URL" -P "$RAY_BUILD_DIR/.whl"
- cp python/requirements_compiled.txt "$RAY_BUILD_DIR"
- cp docker/ray/Dockerfile "$RAY_BUILD_DIR"
- WHEEL="$(basename "$WHEEL_DIR"/.whl/ray-*.whl)"
- BUILD_CMD=(
- docker build "${BUILD_ARGS[@]}"
- --build-arg FULL_BASE_IMAGE="rayproject/base-deps:dev$GPU"
- --build-arg WHEEL_PATH=".whl/${WHEEL}"
- -t "rayproject/ray:dev$GPU" "$RAY_BUILD_DIR"
- )
- if [[ "$OUTPUT_SHA" == "YES" ]]; then
- IMAGE_SHA="$("${BUILD_CMD[@]}")"
- echo "rayproject/ray:dev$GPU SHA:$IMAGE_SHA"
- else
- "${BUILD_CMD[@]}"
- fi
- rm -rf "$WHEEL_DIR"
|