Infrastructure

Dockerfile

Скрипт сборки Docker-образа — набор инструкций для создания воспроизводимой среды.

Что такое Dockerfile

Dockerfile — текстовый файл с инструкциями для сборки Docker-образа. Каждая инструкция создаёт новый слой (layer) поверх предыдущего. Слои кешируются: если изменилась только последняя строка — пересобираются только она и последующие.

Dockerfile для ML-проекта

# Базовый образ с CUDA и cuDNN (nvidia/cuda или pytorch/pytorch)
FROM nvidia/cuda:12.3.1-cudnn9-runtime-ubuntu22.04

# Установка Python
RUN apt-get update && apt-get install -y python3-pip python3-dev && \
    rm -rf /var/lib/apt/lists/*

# Копировать зависимости отдельно (слой кешируется пока requirements не изменится)
COPY requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install --no-cache-dir -r requirements.txt

# Копировать код
COPY . /app

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Важные инструкции

Инструкция Назначение
FROM Базовый образ
RUN Выполнить команду при сборке
COPY / ADD Копировать файлы в образ
ENV Переменные окружения
EXPOSE Объявить порт
CMD / ENTRYPOINT Команда при запуске контейнера
VOLUME Точка монтирования

Оптимизация размера образа

# Многоэтапная сборка — только runtime без dev-инструментов
FROM python:3.11 AS builder
RUN pip install --prefix=/install -r requirements.txt

FROM nvidia/cuda:12.3.1-runtime-ubuntu22.04
COPY --from=builder /install /usr/local
COPY . /app
CMD ["python", "-m", "uvicorn", "main:app"]

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер