Что такое Dockerfile

Знакомимся с Dockerfile — текстовым рецептом, по которому Docker собирает ваш образ.

Dockerfile — текстовый файл с пошаговыми инструкциями, описывающими, как собрать образ приложения.

Зачем собирать свой образ

Готовые образы (nginx, postgres) хороши, но ваше приложение в них не лежит. Чтобы упаковать свой код вместе с зависимостями, нужен собственный образ. Его сборку описывают в файле с именем Dockerfile (именно так, без расширения).

Dockerfile — это рецепт: «возьми базовый образ, скопируй в него мой код, установи зависимости, укажи команду запуска». Имея этот файл, кто угодно соберёт точно такой же образ.

Как выглядит Dockerfile

Простой пример для приложения на Node.js:

FROM node:22-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Каждая строка — отдельная инструкция. Читается сверху вниз: взять базовый образ Node.js, задать рабочую папку, скопировать манифест зависимостей, установить их, скопировать остальной код, объявить порт и указать команду запуска.

Из Dockerfile в образ и контейнер

Цепочка такая:

  1. Dockerfile — рецепт (текст).
  2. docker build выполняет рецепт и создаёт образ.
  3. docker run запускает из образа контейнер.
# Собрать образ из Dockerfile в текущей папке
docker build -t my-app .

# Запустить контейнер из собранного образа
docker run -d -p 3000:3000 my-app

Комментарии и структура

Строки, начинающиеся с #, — комментарии. Инструкции пишут заглавными буквами (это соглашение, а не требование). Файл читается как обычный текст и хранится в репозитории вместе с кодом — это и есть «инфраструктура как код».

Итог

  • Dockerfile — текстовый рецепт сборки образа вашего приложения.
  • Он описывает базовый образ, копирование кода, установку зависимостей и команду запуска.
  • docker build превращает Dockerfile в образ, а docker run — образ в контейнер.
Проверьте себя
1. Что такое Dockerfile?
AГотовый образ из Docker Hub
BТекстовый файл с инструкциями по сборке образа
CЗапущенный контейнер
DКонфигурация сети Docker
2. Какая команда превращает Dockerfile в образ?
Adocker run
Bdocker build
Cdocker pull
Ddocker exec
Поддержать проект