Что такое 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 в образ и контейнер
Цепочка такая:
- Dockerfile — рецепт (текст).
docker buildвыполняет рецепт и создаёт образ.docker runзапускает из образа контейнер.
# Собрать образ из Dockerfile в текущей папке
docker build -t my-app .
# Запустить контейнер из собранного образа
docker run -d -p 3000:3000 my-app
Комментарии и структура
Строки, начинающиеся с #, — комментарии. Инструкции пишут заглавными буквами (это соглашение, а не требование). Файл читается как обычный текст и хранится в репозитории вместе с кодом — это и есть «инфраструктура как код».
Итог
- Dockerfile — текстовый рецепт сборки образа вашего приложения.
- Он описывает базовый образ, копирование кода, установку зависимостей и команду запуска.
docker buildпревращает Dockerfile в образ, аdocker run— образ в контейнер.