我想对具有大量依赖关系的flask
应用程序进行Docker化。我的目标是减少最终docker映像的大小。
我尝试了多阶段构建,但这并没有减小最终docker映像的大小。
下面是我的Dockerfile
FROM python:3.6-slim-buster as base
RUN apt-get update && apt-get install --no-install-recommends --no-upgrade -y \
libglib2.0-0 libxext6 libsm6 libxrender1 libfontconfig1 && rm -rf /var/lib/apt/lists/*
WORKDIR /wheels
COPY requirements.txt /wheels
RUN pip install -U pip \
&& pip wheel -r requirements.txt
FROM python:3.6-slim-buster
COPY --from=base /wheels /wheels
RUN pip install -U pip \
&& pip install -r /wheels/requirements.txt \
-f /wheels \
&& rm -rf /wheels \
&& rm -rf /root/.cache/pip/*
...
最后一个pip install...
命令占用了905MB
。
我应如何将所有要求与最终映像分开,并减小最终docker映像的整体尺寸?
答案 0 :(得分:0)
在最终this
中删除/ wheels不会使图像变小-这些文件仍位于最终图像所基于的上一层中。复制完其中的内容后,图像中的内容就会出现。
我建议将代码安装到构建映像中的virtualenv中(尽管您也可以执行--user install),然后将virtualenv复制到运行时映像中。
RUN
有关原始版本的更多说明,请参见此处:https://pythonspeed.com/articles/multi-stage-docker-python/