Что такое Dockerfile и для чего он используется?

Ответ

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"]