我正在构建一个项目,该项目需要对私有python存储库的某些依赖。此仓库内部有一个子模块,该子模块还指向私有仓库。我可以使用ssh密钥在机器上获取它,这在容器内部并不方便。
在我的dockerfile中,我阻止了这一步:
RUN pip3 install wheel \
&& pip3 wheel git+https://${GITHUB_TOKEN}@github.com/owner/repo.git@master \
--wheel-dir=/svc/wheels
它可以毫无问题地获取存储库,但不能处理子模块。我猜pip会解析URL,并且不会通过最初传输的令牌。
我真的不知道如何解决此问题。我可以在本地存放该文件夹并进行复制,也可以设置在构建期间访问的私有pip仓库(如果可能的话),或者在容器内使用ssh键(听起来对我来说很糟糕)。
是否有任何“标准方法”?如果没有,您会提出什么建议?
EDIT1:这似乎是一个git问题,因为git clone --recursive
两者都不起作用
解答:我首先需要按照建议使用netrc,并在子模块声明中发现了一个问题。它是使用ssh设置的。url = [email protected]:
相反url = https://github.com/
。感谢您花费时间和精力进行测试。我会接受larsks
他的指导,
而不是通过${GITHUB_TOKEN)
命令行,您应该能够将其配置为.netrc
文件,如本答案中所述。
您Dockerfile
将包括以下内容:
RUN echo machine github.com login ${GITHUB_TOKEN} > ~/.netrc
RUN pip3 install wheel \
&& pip3 wheel git+https://github.com/owner/repo.git@master \
--wheel-dir=/svc/wheels
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句