Что такое Dockerfile и для чего он используется?

«Что такое Dockerfile и для чего он используется?» — вопрос из категории CI/CD и DevOps, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Dockerfile — это текстовый файл-инструкция для автоматической сборки Docker-образа. Он содержит пошаговые команды, которые определяют базовое окружение, устанавливают зависимости, копируют файлы приложения и настраивают его запуск.

Почему он важен? Dockerfile обеспечивает воспроизводимость и переносимость окружения, устраняя проблему "работает на моей машине".

Пример Dockerfile для Node.js приложения:

# 1. Определяем базовый образ
FROM node:18-alpine

# 2. Устанавливаем рабочую директорию внутри контейнера
WORKDIR /app

# 3. Копируем файлы зависимостей и устанавливаем их
COPY package*.json ./  
RUN npm ci --only=production

# 4. Копируем исходный код приложения
COPY . .

# 5. Объявляем порт, который будет использовать приложение
EXPOSE 3000

# 6. Команда для запуска контейнера
CMD ["node", "server.js"]

Ключевые инструкции:

  • FROM — задает базовый образ.
  • COPY/ADD — копирует файлы и папки в образ.
  • RUN — выполняет команды в процессе сборки (установка пакетов).
  • CMD — определяет команду по умолчанию для запуска контейнера.
  • EXPOSE — документирует используемый порт (не открывает его).