我有一个 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
在最后一张(第三张)图片中没有,因为您只有git
in dependencies
,而最后一张来自base
,它是纯高山蟒蛇。
因此,当您尝试这样做时RUN pip install -r requirements.txt && rm -rf /root/.cache
,您将无法满足git
协议的要求。
如果您需要使最终图像变薄,则有几种方法可以修复它:
使用
venv
(Python 的虚拟环境);在第二步和COPY
最后一步创建它。那么就不需要安装需求了。在第 2 步将 reqs 从存储库下载到本地磁盘,然后将
COPY
它们下载到第 3 步并安装(gcc
第 3 步可能需要,但不需要git
)
添加回答
举报
0/150
提交
取消