为了账号安全,请及时绑定邮箱和手机立即绑定

Slim Docker Image 包含 git 存储库

Slim Docker Image 包含 git 存储库

慕莱坞森 2021-10-12 16:05:39
我有一个 requirements.txt 文件,其中包含以下包:git+https://username:password@gitlab.mycompany.com/mypackage.git@master#egg=mypackage我能够使用基本的 dockerfile 构建我的 docker 镜像。但是,我正在尝试使用更复杂的 docker 文件来使我的 docker 映像尽可能地纤薄:FROM python:3.7-alpine as baseCOPY . /appWORKDIR /appFROM base AS dependenciesCOPY requirements.txt ./RUN apk add --no-cache make automake gcc g++ git  && \    pip install -r requirements.txtFROM baseWORKDIR /appCOPY . /appCOPY --from=dependencies /root/.cache /root/.cacheCOPY requirements.txt ./RUN pip install -r requirements.txt && rm -rf /root/.cacheEXPOSE 8000CMD python main.py问题是,在构建的最后阶段,我收到了无法找到“git”的错误,即构建尝试拉取“mypackage”而不是从“依赖项”部分获取它。知道如何解决这个问题吗?错误: Error [Errno 2] No such file or directory: 'git': 'git' while executing command git clone -q     Cannot find command 'git' - do you have 'git' installed and in your PATH?
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

git在最后一张(第三张)图片中没有,因为您只有gitin dependencies,而最后一张来自base,它是纯高山蟒蛇。

因此,当您尝试这样做时RUN pip install -r requirements.txt && rm -rf /root/.cache,您将无法满足git协议的要求。

如果您需要使最终图像变薄,则有几种方法可以修复它:

  • 使用venv(Python 的虚拟环境);在第二步和COPY最后一步创建它。那么就不需要安装需求了。

  • 在第 2 步将 reqs 从存储库下载到本地磁盘,然后将COPY它们下载到第 3 步并安装(gcc第 3 步可能需要,但不需要git


查看完整回答
反对 回复 2021-10-12
  • 1 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号