Уменьшение размера образа докера: многоступенчатая сборка или другие предложения
Я пытаюсь развернуть свое приложение 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 вопроса:
- Является ли многоступенчатый Dockerfile логичным? Мне кажется, что здесь что-то не так, что объясняет отсутствие значительного уменьшения размера образа.
- Есть ли другие способы уменьшить размер образа? Изначально я использовал 'FROM python:3.10.5' вместо 'FROM python:3.10.5-slim', и это дало мне 600 МБ размера изображения. Я перешел на slim, и он уменьшился до 300 МБ. Может быть, нужно использовать другое изображение меньшего размера или какие-то настройки в моем проекте django?