设置 Databricks 资产捆绑包以在隔离的环境中工作

Databricks 资产捆绑包需要依赖于外部库和工具才能正常运行。 必须能够访问这些依赖项的位置 (URL),否则捆绑包初始化会失败。 因此,在无法访问 Internet 的隔离网络环境中使用 Databricks 资产捆绑包之前,需要下载 Databricks CLI 提供的 Docker 容器映像,并通过 Docker 管理 Databricks 资产捆绑包。

下载 Docker 容器映像

Databricks CLI Docker 容器映像支持 ARM64 和 AMD64 CPU 体系结构,可在 Databricks CLI GitHub 存储库中获取。 可以通过运行以下命令下载最新的可用映像:

docker pull ghcr.io/databricks/cli:latest

如果你要下载与特定 Databricks CLI 版本关联的映像,请指定版本,如下所示:

docker pull ghcr.io/databricks/cli:v0.218.0

通过 Docker 管理 Databricks 资产捆绑包

下载相应的 Docker 容器后,可以使用 Docker CLI 直接或以交互方式执行 databricks bundle 命令。

直接执行

若要直接执行 bundle 命令,请使用 docker run。 例如,以下命令部署 /my-bundle 中的捆绑包:

docker run -v /my-bundle:/my-bundle -e DATABRICKS_HOST=... -e DATABRICKS_TOKEN=... --workdir /my-bundle ghcr.io/databricks/cli:latest bundle deploy

在上面的示例中,-v /my-bundle:/my-bundle 使用同一捆绑包名称将 my-bundle 装载到 Docker 容器的文件系统中,-e DATABRICKS_HOST=... -e DATABRICKS_TOKEN=... 通过将主机和凭据作为环境变量传递来验证 Databricks CLI,--workdir /my-bundle ghcr.io/databricks/cli:latest 将当前工作目录设置为 /my-bundle。 其他 docker run 命令选项可在 Docker 文档中找到。

交互式执行

若要以交互方式执行 bundle 命令,首先请结合 -it--entrypoint 选项使用 docker run 来启动附加到容器的集成 sh 终端会话,如下所示:

docker run -v /my-bundle:/my-bundle -e DATABRICKS_HOST=... -e DATABRICKS_TOKEN=... -it --entrypoint /bin/sh --workdir /my-bundle ghcr.io/databricks/cli:latest

当 Docker 终端会话启动时,可以直接在终端中执行 bundle 命令。 以下示例部署名为 my-bundle 的捆绑包:

/my-bundle # databricks bundle deploy

卷装载会双向同步,因此你可以在本地对捆绑包进行更改,然后使用此 Docker 终端会话执行 bundle 命令。 在这种情况下,无需再次执行 docker run