使用docker compose启动docker容器时安装python wheel

jc3wubiy  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(444)

我们目前正在开发一个python包,它将通过azuredevops管道构建,结果包将存储在azure工件中。
在生产中,我们直接从azure工件将该包安装到一些databricks集群。benfit是,只要有新版本的包可用,就在启动集群时安装它
对于开发,我想用docker容器在本地spark环境中做类似的工作。我们已经建立了码头集装箱工作正常,除了一件事。
当我运行docker compose命令时,我想从azureartifacts安装最新版本的包。因为我们需要访问令牌才能在设置中获取此包,所以我不能在git repo中提供此令牌。因此,我需要一种方法来安全地向docker compose命令提供令牌,并从启动时安装包。
另外,如果使用dockerfile命令,每次我们都会得到一个新版本的包,我必须再次构建docker映像。
因此,这些任务需要从我心目中的用户那里完成(假设dockerimages已经生成):
有一个存储令牌的本地文件
使用我的docker compose命令启动本地环境(顺便说一下,使用spark master和workers以及jupyter笔记本)
自动:从本地文件获取令牌,将其提供给docker容器中的任何启动脚本,并从azure工件安装包。
因为我不是docker方面的Maven,所以我找到了一些关于entrypoint和cmd的主题,但不明白这一点,也不知道该怎么做。
有没有人能告诉我们怎样才能轻松实现上述逻辑?
ps:为了进行测试,我尝试使用以下命令安装软件包:在docker compose with plaintext token期间,安装工作正常,但无法再访问juypter笔记本:-(
希望任何人都有一个想法或更好的方法来实现我的目标。
致以最诚挚的问候

vptzau2j

vptzau2j1#

可以使用生成参数:

docker-compose build --build-arg ARTIFACTORY_USERNAME=<your_username> --build-arg ARTIFACTORY_PASSWORD=<your_password> <service_to_build>

那么您的dockerfile可能看起来像:

FROM <my_base_image>

ARG ARTIFACTORY_USERNAME
ARG ARTIFACTORY_PASSWORD

RUN pip install <your_package_name> --extra-index-url https://$ARTIFACTORY_USERNAME:$ARTIFACTORY_PASSWORD@pkgs.dev.azure.com/<org>/_packaging/<your_package_name>/pypi/simple/
...

相关问题