Slim Docker Image 包含 git 存储库

我有一个 requirements.txt 文件,其中包含以下包:


git+https://username:password@gitlab.mycompany.com/mypackage.git@master#egg=mypackage

我能够使用基本的 dockerfile 构建我的 docker 镜像。但是,我正在尝试使用更复杂的 docker 文件来使我的 docker 映像尽可能地纤薄:


FROM python:3.7-alpine as base

COPY . /app

WORKDIR /app


FROM base AS dependencies

COPY requirements.txt ./

RUN apk add --no-cache make automake gcc g++ git  && \

    pip install -r requirements.txt


FROM base

WORKDIR /app

COPY . /app

COPY --from=dependencies /root/.cache /root/.cache

COPY requirements.txt ./

RUN pip install -r requirements.txt && rm -rf /root/.cache

EXPOSE 8000

CMD 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?


慕莱坞森
浏览 251回答 1
1回答

LEATH

您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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python