Уменьшение размера образа докера: многоступенчатая сборка или другие предложения

Я пытаюсь развернуть свое приложение Django с помощью docker. Вот мой исходный файл docker

FROM python:3.10.5-slim

ENV DockerHOME = /app

WORKDIR $DockerHOME

COPY requirements.txt .

RUN pip install --upgrade pip

COPY . $DockerHOME

RUN pip install --nocache-dir -r requirements.txt

EXPOSE 8000

CMD ["python", "manage.py", "runserver"]

Однако после сборки размер изображения составил 300 МБ, что было слишком много. Тогда я попробовал сделать многоступенчатую сборку следующим образом (что, по мнению google, может помочь значительно уменьшить размер изображения):

FROM python:3.10.5-slim as base

ENV DockerHOME = /app

WORKDIR $DockerHOME

COPY requirements.txt .

RUN pip install --upgrade pip

RUN pip install --nocache-dir -r requirements.txt

FROM python:3.10.5-slim

COPY --from=base $DockerHOME $DockerHOME
COPY . $DockerHOME

WORKDIR $DockerHOME

EXPOSE 8000

CMD ["python", "manage.py", "runserver"]

Но это также привело к созданию изображения размером 300 МБ.

Может ли кто-нибудь помочь мне с этим? У меня 2 вопроса:

  1. Является ли многоступенчатый Dockerfile логичным? Мне кажется, что здесь что-то не так, что объясняет отсутствие значительного уменьшения размера образа.
  2. Есть ли другие способы уменьшить размер образа? Изначально я использовал 'FROM python:3.10.5' вместо 'FROM python:3.10.5-slim', и это дало мне 600 МБ размера изображения. Я перешел на slim, и он уменьшился до 300 МБ. Может быть, нужно использовать другое изображение меньшего размера или какие-то настройки в моем проекте django?
Вернуться на верх