【问题标题】:How to configure Databricks token inside Docker File如何在 Docker 文件中配置 Databricks 令牌
【发布时间】:2020-10-21 19:20:01
【问题描述】:

我有一个我想要的 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"]

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

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

【问题讨论】:

  • 你能解决这个问题吗?您能否发布解决方案。谢谢。

标签: docker databricks databricks-cli


【解决方案1】:

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

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

相反,最好将两个环境变量传递给容器,它们将被databricks 命令拾取。它们是DATABRICKS_HOSTDATABRICKS_TOKEN,如documentation 中所述。

【讨论】:

    【解决方案2】:

    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"
    

    【讨论】:

      【解决方案3】:

      将令牌放入 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_HOSTDATABRICKS_API_TOKEN 等变量可能无法正确传播。

      如果您想在 docker 容器中连接到 Databricks 集群,您需要进行更多配置。您可以在本文中找到所需的详细信息:How to Connect a Local or Remote Machine to a Databricks Cluster

      【讨论】:

        猜你喜欢
        • 2018-10-05
        • 1970-01-01
        • 2018-02-01
        • 2020-02-29
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2018-03-23
        • 1970-01-01
        相关资源
        最近更新 更多