Этот вопрос проверяет понимание структуры Dockerfile и его ключевых инструкций, необходимых для создания Docker-образов.
Dockerfile — это сценарий сборки, который Docker использует для создания образа. Он содержит пошаговые инструкции, описывающие, как собрать среду выполнения приложения.
node:18-alpine или python:3.11-slim). Это первая инструкция в любом Dockerfile.COPY предпочтительнее для простого копирования.RUN, CMD, ENTRYPOINT, COPY и ADD.CMD предоставляет аргументы по умолчанию для ENTRYPOINT или может быть самостоятельной командой.EXPOSE 3000).--build-arg).# Используем официальный легковесный образ Node.js
FROM node:18-alpine AS builder
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем файлы зависимостей
COPY package*.json ./
# Устанавливаем зависимости
RUN npm ci --only=production
# Копируем исходный код приложения
COPY . .
# Открываем порт, на котором работает приложение
EXPOSE 3000
# Определяем команду для запуска приложения
CMD ["node", "server.js"]Этот пример показывает типичный многоступенчатый подход: сначала копируются файлы зависимостей (package.json), чтобы использовать кэш Docker при установке, а затем копируется остальной код. Это ускоряет повторные сборки.
Dockerfile используется в CI/CD пайплайнах для автоматической сборки образов, в локальной разработке для создания идентичных сред и при развертывании в оркестраторах, таких как Kubernetes. Он обеспечивает воспроизводимость: образ, собранный из одного и того же Dockerfile, будет идентичным на любой системе.
Вывод: Правильно составленный Dockerfile должен содержать минимально необходимый набор инструкций для создания эффективного, безопасного и переносимого образа. Его стоит применять для контейнеризации любого приложения, чтобы гарантировать одинаковое поведение в разных средах — от ноутбука разработчика до продакшн-сервера.