Что такое Dockerfile и каково его назначение

Ответ

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

Основные инструкции:

  • FROM: Задает базовый образ (например, python:3.9 или ubuntu:20.04).
  • WORKDIR: Устанавливает рабочую директорию внутри контейнера.
  • COPY: Копирует файлы и папки с хост-машины в контейнер.
  • RUN: Выполняет команды в процессе сборки (например, pip install -r requirements.txt).
  • CMD или ENTRYPOINT: Определяет команду, которая будет выполнена при запуске контейнера.

Пример Dockerfile для простого Python-приложения:

# 1. Использовать официальный образ Python как базовый
FROM python:3.9-slim-buster

# 2. Установить рабочую директорию в /app
WORKDIR /app

# 3. Скопировать файл зависимостей и установить их
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 4. Скопировать исходный код приложения в рабочую директорию
COPY . .

# 5. Указать команду для запуска приложения
CMD ["python", "./app.py"]

Назначение Dockerfile:

  1. Автоматизация: Полностью автоматизирует процесс создания образа, исключая ручные ошибки.
  2. Воспроизводимость: Гарантирует, что образ, собранный на любой машине, будет абсолютно идентичным.
  3. Версионирование: Dockerfile хранится в системе контроля версий (например, Git) вместе с кодом, что позволяет отслеживать изменения в инфраструктуре.

Сборка образа выполняется командой docker build -t my-app-image . в директории с Dockerfile.