Ответ
Dockerfile — это текстовый файл, содержащий последовательность инструкций для автоматизированной сборки Docker-образа. Он служит "рецептом", описывающим все шаги, необходимые для создания готового к запуску контейнера, от выбора базовой операционной системы до установки зависимостей и запуска приложения.
Почему это важно?
Использование Dockerfile обеспечивает воспроизводимость сборок, изоляцию окружения и переносимость приложений между различными средами, что является ключевым для современных DevOps-практик. Сборка образа выполняется командой docker build
.
Основные инструкции и их назначение:
FROM
: Определяет базовый образ, на основе которого будет строиться новый (например,python:3.9-slim
).RUN
: Выполняет команды в процессе сборки образа (например, установка пакетов или компиляция кода).COPY
/ADD
: Копирует файлы и директории с хоста в образ.WORKDIR
: Устанавливает рабочую директорию для последующих инструкцийRUN
,CMD
,ENTRYPOINT
.EXPOSE
: Информирует Docker о портах, которые контейнер будет прослушивать во время выполнения (например,EXPOSE 8000
).CMD
/ENTRYPOINT
: Определяет команду, которая будет выполнена при запуске контейнера.
Пример Dockerfile для Python-приложения:
# Используем официальный образ Python 3.9 в минимальной версии
FROM python:3.9-slim
# Устанавливаем рабочую директорию внутри образа
WORKDIR /app
# Копируем файл с зависимостями и устанавливаем их
COPY requirements.txt .
RUN pip install -r requirements.txt
# Копируем остальное содержимое текущей директории в /app образа
COPY . .
# Открываем порт 8000 для входящих соединений
EXPOSE 8000
# Определяем команду для запуска приложения при старте контейнера
CMD ["python", "app.py"]