Sobes.tech
Back to questions
Middle
5

Расскажите про оптимизацию Dockerfile — что за тюнинг делали?

Companies where asked
СБЕР ТехСБЕР Тех

Answer from AI

sobes.tech AI

Оптимизация Dockerfile обычно направлена на уменьшение размера образа, ускорение сборки и повышение кэшируемости слоёв. Основные практики:

  • Минимизация количества слоёв: объединение команд RUN через && уменьшает количество слоёв.
  • Использование легковесных базовых образов: например, alpine вместо ubuntu.
  • Кэширование зависимостей: сначала копировать файлы, которые редко меняются (например, package.json), установить зависимости, а потом копировать остальной код.
  • Удаление временных файлов и кешей: после установки пакетов удалять кеши менеджеров пакетов.
  • Использование .dockerignore: исключать из контекста сборки ненужные файлы, чтобы не передавать их в образ.

Пример оптимизации:

FROM node:18-alpine
WORKDIR /app

# Копируем package.json и package-lock.json для кэширования npm install
COPY package*.json ./
RUN npm install --production && npm cache clean --force

# Копируем остальной код
COPY . .

CMD ["node", "index.js"]

Такой подход позволяет при изменении кода не пересобирать заново слои с установкой зависимостей, что ускоряет сборку.