В вашем Dockerfile используется инструкция ADD для копирования файлов и извлечения архива:

Чтобы уменьшить размер Docker-образа, можно использовать несколько подходов:

Короткий ответ

Что ответить на собеседовании

Чтобы уменьшить размер Docker-образа, можно использовать несколько подходов:

Подробный разбор

Ответ с пояснениями

Условие

В вашем Dockerfile используется инструкция ADD для копирования файлов и извлечения архива:

FROM nginx:latest
ADD /app.tar.gz /usr/share/nginx/html
ADD /config/nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]

Вы заметили, что сборка образа занимает больше времени, чем ожидалось, а размер образа увеличивается из-за ненужных файлов. Вы внесли изменения.

После изменений:

  1. Сборка образа стала занимать меньше времени.
  2. Размер образа уменьшился, так как больше нет ненужных файлов из архива.

Какие изменения были внесены?

Ответ

Чтобы уменьшить размер Docker-образа, можно использовать несколько подходов:

  • Выбор базового образа: Использовать минималистичные образы, например, alpine вместо ubuntu.
  • Многоступенчатая сборка (multi-stage builds): Сначала собрать приложение в одном образе, а затем копировать только необходимые артефакты в финальный образ.
  • Оптимизация слоёв: Объединять команды RUN, чтобы уменьшить количество слоёв.
  • Удаление временных файлов: Удалять кэш, временные файлы и пакеты после установки.
  • Минимизация зависимостей: Устанавливать только необходимые пакеты и библиотеки.

Пример многоступенчатой сборки:

FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

FROM alpine
COPY --from=builder /app/myapp /myapp
CMD ["/myapp"]

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку