如何在保持图像大小合理的同时将手电筒集成到Docker图像中?

xpcnnkqh  于 2023-02-15  发布在  Docker
关注(0)|答案(1)|浏览(99)

我有一个Flask网络应用程序,它将展示一些深度学习模型。
我建立了形象和一切工作正常。
问题是这个图像的大小是5. 58GB!这有点可笑。
我有一些在构建过程中复制的深度学习模型,我认为它们可能是罪魁祸首,但它们的大小加起来不超过300MB,所以肯定不是。
在检查历史记录和每层的大小时,我发现:

  • RUN /bin/sh -c pip install -r requirements.txt占用了771 MB
  • RUN /bin/sh -c pip install torch==1.10.2占用了2.8 GB!
  • RUN /bin/sh -c apt-get install ffmpeg libsm6 libxext6占用了400 MB

那么我如何合并这些库,同时保持图像大小合理?在python中部署ml模型时,使用这些大小的图像可以吗?
下面是root directory

Dockerfile

FROM python:3.7.13
WORKDIR /app 
COPY ["rdm.pt", "autosort_model.pt", "rotated_model.pt", "yolov5x6.pt", "/app/"]
RUN pip install torch==1.10.2
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6  -y
COPY . /app
CMD python ./app.py

.dockerignore

Dockerfile
README.md
__pycache__
hgtggwj0

hgtggwj01#

默认情况下,torch会打包CUDA包和其他东西。如果你不需要CUDA,请在pip安装命令中添加--extra-index-url https://download.pytorch.org/whl/cpu--no-cache-dir
RUN pip install --no-cache-dir -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu
此外,删除apt列表缓存也是一个很好的做法:

RUN apt-get update \
    && apt-get install -y \
    ffmpeg \
    libsm6 \
    libxext6 \
    && rm -rf /var/lib/apt/lists/*

相关问题