Dockerfile: кеш зависимостей и непривилегированный запуск

Сильнее второй вариант: сначала файл зависимостей и их установка, затем исходники; приложение запускается непривилегированным пользователем. Он решает обе обозначенные проблемы.

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

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

Сильнее второй вариант: сначала файл зависимостей и их установка, затем исходники; приложение запускается непривилегированным пользователем. Он решает обе обозначенные проблемы.

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

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

Условие

Практическое задание Искусственный интеллект предлагает Dockerfile с COPY . . до установки зависимостей и запуском приложения от root. Какой вариант ревью сильнее?

  • Оставить root, но добавить EXPOSE.
  • Сначала скопировать файл зависимостей, установить их, затем код; добавить непривилегированного пользователя.
  • Только переставить COPY файла зависимостей.
  • Добавить ещё один порт для отладки.
  • Ничего не менять: контейнер изолирован.
  • Добавить непривилегированного пользователя и оставить порядок слоёв.

Ответ

Сильнее второй вариант: сначала файл зависимостей и их установка, затем исходники; приложение запускается непривилегированным пользователем. Он решает обе обозначенные проблемы.

Разделение слоёв позволяет повторно использовать кеш установки зависимостей, пока их описание не изменилось. Непривилегированный пользователь уменьшает последствия компрометации процесса; контейнерная изоляция не делает root автоматически безопасным.

В ревью также проверьте lock-файл, права на рабочие каталоги и .dockerignore, чтобы секреты и лишние файлы не попадали в образ. EXPOSE лишь описывает порт и не заменяет ограничения привилегий. Перестановка только одного слоя или изменение только пользователя оставляет вторую проблему нерешённой.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее