我刚刚创建了一个相当大的私有python包。我想将它作为我在Docker容器中的应用程序的构建过程的一部分安装(虽然这不是那么重要)。包源非常大,所以理想情况下我不会下载/保留整个源代码。
现在,我一直在和我的应用程序一起传递包源,但这是笨拙的,希望是暂时的。什么是更好的方式? git子模块/子树?我对此很陌生。
答案 0 :(得分:9)
如果您将github与私人仓库一起使用,则必须创建SSH部署密钥并将私钥添加到应用程序文件夹中以进行构建。
pip install git+git://github.com/myuser/foo.git@v123
或者,您可以将pip-cache文件夹从主机安装到容器中,并从该文件夹执行pip install。您必须将python包保存在缓存目录中。
pip install --no-index --find-links=/my/pip-cache/
您可以使用以下命令将python包安装到此pip-cache:
pre pip 9.0.1:
pip install --download pip-cache/ package1 package2
点9.0.1+(thx评论@James Hiew):
pip install download pip-cache/ package1 package2
答案 1 :(得分:6)
您可以设置OAuth令牌here in Github并使用命令
pip install git+https://<your_oauth_token>:x-oauth-basic@github.com/myuser/foo.git
更多文档here。
答案 2 :(得分:1)
我将它放在一个单独的私人仓库中,然后使用pip将其作为要求安装:
pip install git+git://github.com/myuser/foo.git@v123
答案 3 :(得分:0)
如果您不想使用ssh密钥,请使用http和令牌身份验证,但您不希望在您的仓库中公开您的令牌,我建议将令牌作为环境变量传递。
添加到您的Dockerfile:
ENV GITOKEN "$GITOKEN"
RUN bash -c "pip install -r <(envsubst < requirements.txt)"
将您的要求设置为:
+plotly==2.7.0
+git+https://$GITOKEN@github.com/githubuser/your_package.git@master
答案 4 :(得分:0)
当您有一个requirements.txt
文件并且想要在Dockerfile中执行pip install -r requirements.txt
时,我要做的是:
GITHUB_TOKEN
环境变量。将其放入.env
docker-compose.yml
文件中的ARG RUN git config --global url."https://${GITHUB_OAUTH_TOKEN}@github.com/".insteadOf "https://github.com/"
这可以修补来自requirements.txt
的所有URL