Dockerfile - это текстовый файл, который содержит инструкции для создания Docker-образа. Dockerfile описывает все необходимые компоненты для запуска приложения в контейнере, включая базовый образ, установку зависимостей, копирование файлов и настройку окружения.
Основные цели
- Стандартизация и автоматизация процесса сборки образов Docker. Это позволяет создавать одинаковые окружения для приложения независимо от машины, на которой оно запускается.
- Упаковка приложения и всех его зависимостей в единый образ, что упрощает развертывание и перенос приложения на другую инфраструктуру.
- Разделение ответственности - Dockerfile описывает только необходимые компоненты для запуска приложения, а не всю инфраструктуру
Основные инструкции
-
FROM - указывает базовый образ, на основе которого будет создан новый образ.
Dockerfile FROM
-
RUN - выполняет команды внутри контейнера, например установку пакетов.
Dockerfile RUN
-
COPY - копирует файлы и директории из хоста в контейнер.
Dockerfile COPY
-
WORKDIR - устанавливает рабочую директорию внутри контейнера.
Dockerfile WORKDIR
-
EXPOSE - указывает порты, которые будет слушать контейнер.
Dockerfile EXPOSE
-
CMD - задает команду, которая будет выполняться при запуске контейнера
Dockerfile CMD
Слои образа
Однослойный образ
- Состоит из единого слоя, который содержит все необходимые компоненты для запуска приложения.
- Создается путем выполнения всех инструкций Dockerfile в одном слое.
- Имеет более простую структуру, но может быть больше по размеру, так как все изменения накапливаются в одном слое.