Python Slim Docker映像包含git存储库

Python Slim Docker映像包含git存储库,python,python-3.x,git,docker,Python,Python 3.x,Git,Docker,我有一个requirements.txt文件,其中包含以下软件包: git+https://username:password@gitlab.mycompany.com/mypackage.git@master#egg=mypackage 我能够使用基本docker文件构建我的docker映像。 但是,我正在尝试使用更复杂的docker文件,以使我的docker图像尽可能薄: FROM python:3.7-alpine as base COPY . /app WORKDIR /app FR

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

git+https://username:password@gitlab.mycompany.com/mypackage.git@master#egg=mypackage
我能够使用基本docker文件构建我的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”,而不是从“dependencies”部分获取它。你知道怎么解决这个问题吗

错误:

 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?

在最后一个(第三个)映像中没有
git
,因为在
dependencies
中只有
git
,而最后一个源于
base
,这是纯python

因此,当您尝试
运行pip安装-r requirements.txt和&rm-rf/root/.cache
时,使用
git
协议无法满足需求

如果您需要使最终图像更苗条,有几种方法可以修复它:

  • 使用
    venv
    (Python的虚拟环境);在第二步创建,并将其复制到最后一步。那么就不需要安装需求了

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

venv正是我想要的!我用这篇博文实现了:。我的Docker图像缩小到240MB,包括熊猫和numpy,不确定是否有可能使其更苗条。