Python 减小Docker图像大小

Python 减小Docker图像大小,python,docker,docker-compose,amazon-ecs,Python,Docker,Docker Compose,Amazon Ecs,因此,我尝试使用docker compose将多容器服务(web、worker、redis)部署到ECS。该服务有一个ML模型,它需要Tensorflow和Keras作为依赖项。运行pip安装-r requirements.txt后,映像大小增加到2gb以上,其中1.75gb是依赖项。有没有办法减小图像的大小?既然在云上部署如此大的映像有很多缺点 用于web的Dockerfile: FROM python:3.6 WORKDIR . COPY . . RUN pip install --no-c

因此,我尝试使用docker compose将多容器服务(web、worker、redis)部署到ECS。该服务有一个ML模型,它需要Tensorflow和Keras作为依赖项。运行pip安装-r requirements.txt后,映像大小增加到2gb以上,其中1.75gb是依赖项。有没有办法减小图像的大小?既然在云上部署如此大的映像有很多缺点

用于web的Dockerfile:

FROM python:3.6
WORKDIR .
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
CMD ["python", "views.py"]

考虑到您的依赖关系导致1.75GB的增长,您应该从这里开始。没有容易的银弹。这些是第一步:

  • 查看各个依赖项增加图像的程度。从最大的罪犯开始
  • 查看依赖项是否允许不同的安装变体。也许有一个版本不需要完整的库
  • 查看是否可以手动删除依赖项的某些部分。如果在
    pip安装--no cache dir-r requirements.txt&&rm-rf somepath
    之后立即执行删除操作,docker映像将不会增长
  • 接下来,您可以搜索更优化的基础图像。您可以试试python:3.6-slim

  • 最大的依赖项是Tensorflow,但我需要它,因为我的项目是围绕它构建的。它占用了1.75gbs的大部分空间,所以有办法解决这个问题吗?例如,使用Python3.6作为我的环境,而不是从tensorflow中替换ThetWih…?鉴于tensorflow基本映像小于600MB,这可能是另一个值得尝试的路径。这相当于2。三,。另一个选择是重建一个更苗条的基础形象,但这将是相当多的工作和噩梦维持。
    requirements.txt:
    Flask==1.1.2
    numpy==1.18.5
    opencv-python==4.2.0.34
    Pillow==7.1.2
    redis==3.5.3
    rq==1.4.3
    boto3
    pymongo
    Keras==2.2.4
    tensorflow==1.15.0
    matplotlib