builder_gpu.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. source ./build/util.sh
  4. # Absolute path to the toplevel milvus directory.
  5. toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)")
  6. if [[ "$IS_NETWORK_MODE_HOST" == "true" ]]; then
  7. sed -i '/gpubuilder:/,/^\s*$/s/image: \${IMAGE_REPO}\/milvus-env:gpu-\${OS_NAME}-\${GPU_DATE_VERSION}/&\n network_mode: "host"/' $toplevel/docker-compose.yml
  8. fi
  9. export OS_NAME="${OS_NAME:-ubuntu22.04}"
  10. pushd "${toplevel}"
  11. if [[ "${1-}" == "pull" ]]; then
  12. $DOCKER_COMPOSE_COMMAND pull gpubuilder
  13. exit 0
  14. fi
  15. if [[ "${1-}" == "down" ]]; then
  16. $DOCKER_COMPOSE_COMMAND down
  17. exit 0
  18. fi
  19. # Attempt to run in the container with the same UID/GID as we have on the host,
  20. # as this results in the correct permissions on files created in the shared
  21. # volumes. This isn't always possible, however, as IDs less than 100 are
  22. # reserved by Debian, and IDs in the low 100s are dynamically assigned to
  23. # various system users and groups. To be safe, if we see a UID/GID less than
  24. # 500, promote it to 501. This is notably necessary on macOS Lion and later,
  25. # where administrator accounts are created with a GID of 20. This solution is
  26. # not foolproof, but it works well in practice.
  27. uid=$(id -u)
  28. gid=$(id -g)
  29. [ "$uid" -lt 500 ] && uid=501
  30. [ "$gid" -lt 500 ] && gid=$uid
  31. mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-ccache"
  32. mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-go-mod"
  33. mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-vscode-extensions"
  34. mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-conan"
  35. chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}"
  36. docker compose pull gpubuilder
  37. if [[ "${CHECK_BUILDER:-}" == "1" ]]; then
  38. $DOCKER_COMPOSE_COMMAND build gpubuilder
  39. fi
  40. if [[ "$(id -u)" != "0" ]]; then
  41. $DOCKER_COMPOSE_COMMAND run --no-deps --rm -u "$uid:$gid" gpubuilder "$@"
  42. else
  43. $DOCKER_COMPOSE_COMMAND run --no-deps --rm gpubuilder "$@"
  44. fi
  45. popd