3

我有一个我想要的 docker 文件

  1. 下载 Databricks CLI
  2. 通过添加主机和令牌来配置 CLI
  3. 然后运行一个命中 Databricks 令牌的 python 文件

我能够在 docker 映像中安装 CLI,并且我有一个可以将作业提交到 Databricks API 的工作 python 文件,但我不确定如何在 docker 中配置我的 CLI。

这是我所拥有的

FROM python
MAINTAINER nope

# Creating Application Source Code Directory
RUN mkdir -p /src

# Setting Home Directory for containers
WORKDIR /src

# Installing python dependencies
RUN pip install databricks_cli

# Not sure how to do this part???
# databricks token kicks off the config via CLI
RUN databricks configure --token

# Copying src code to Container
COPY . /src

# Start Container
CMD echo $(databricks --version)

#Kicks off Pythern Job
CMD ["python", "get_run.py"]

如果我要databricks configure --token在 CLI 中执行,它会提示输入如下配置:

databricks configure --token
Databricks Host (should begin with https://): 
4

3 回答 3

2

出于多种原因,最好不要这样做:

  1. 这是不安全的 - 如果您以这种方式配置 Databricks CLI,它将在容器内生成一个文件,任何有权访问它的人都可以读取该文件
  2. 令牌有生存时间(默认为 90 天)——这意味着你需要定期重建你的容器......

相反,最好将两个环境变量传递给容器,它们将被命令拾取databricks。这些DATABRICKS_HOST文档DATABRICKS_TOKEN中描述的一样。

于 2020-12-05T17:17:05.883 回答
0

将令牌放入 DockerFile 不是很安全。但是,如果您想采用这种方法,您可以使用下面的代码。

RUN export DATABRICKS_HOST=XXXXX && \
    export DATABRICKS_API_TOKEN=XXXXX && \
    export DATABRICKS_ORG_ID=XXXXX && \
    export DATABRICKS_PORT=XXXXX && \
    export DATABRICKS_CLUSTER_ID=XXXXX && \
    echo "{\"host\": \"${DATABRICKS_HOST}\",\"token\": \"${DATABRICKS_API_TOKEN}\",\"cluster_id\":\"${DATABRICKS_CLUSTER_ID}\",\"org_id\": \"${DATABRICKS_ORG_ID}\", \"port\": \"${DATABRICKS_PORT}\" }" >> /root/.databricks-connect

确保使用一个命令运行一行中的所有RUN命令。否则,诸如DATABRICKS_HOST或之类的变量DATABRICKS_API_TOKEN可能无法正确传播。

如果要连接到 docker 容器中的 Databricks 集群,则需要更多配置。您可以在本文中找到所需的详细信息:如何将本地或远程计算机连接到 Databricks 集群

于 2021-04-16T17:03:13.773 回答
0

databricks configure运行成功时,它将信息写入文件~/.databrickscfg

[DEFAULT]
host = https://your-databricks-host-url
token = your-api-token

您可以在容器中设置它的一种方法是使用启动命令(此处的语法为docker-compose.yml):

/bin/bash -ic "echo '[DEFAULT]\nhost = ${HOST_URL}\ntoken = ${TOKEN}' > ~/.databrickscfg"
于 2020-11-18T21:57:25.777 回答