FROM python:3.11.0-alpine
🛠 FROM: Определяет базовый образ для контейнера. Здесь мы используем легковесную версию Python 3.11.0 на Alpine Linux, что обеспечивает низкое потребление ресурсов.
LABEL maintainer="Разработчик"
👤 LABEL: Добавляет метаданные к образу, например, информацию о том, кто является его поддерживающим лицом.
# Установка рабочей директории
WORKDIR /app
📁 WORKDIR: Устанавливает рабочую директорию контейнера. Все команды RUN, CMD, ENTRYPOINT и COPY будут относиться к этой директории.
# Копирование файлов зависимостей
COPY requirements.txt ./
📄 COPY: Копирует файл
requirements.txt, который содержит список необходимых зависимостей для приложения, в рабочую директорию контейнера.# Установка зависимостей
RUN pip install --no-cache-dir -r requirements.txt
📦 RUN: Выполняет команду для установки зависимостей, указанных в файле
requirements.txt, с использованием флага --no-cache-dir для предотвращения хранения кэша, что экономит место.# Копирование остального кода приложения
COPY . .
📃 COPY: Копирует весь остальной код приложения в рабочую директорию контейнера.
# Открываем порт для приложения
EXPOSE 5000
🌐 EXPOSE: Указывает на то, что контейнер слушает на порту 5000. Это полезно для взаимодействия с приложением извне.
# Запуск приложения
CMD ["python", "app.py"]
▶️ CMD: Определяет команду, которая будет выполнена при запуске контейнера. В данном случае мы запускаем файл
app.py, который является основной точкой входа для нашего приложения.Этот Dockerfile предназначен для создания контейнера Python-бэкенда с минимальными затратами. Использование Alpine позволяет создать легковесный образ, а порядок команд помогает эффективно управлять зависимостями и кодом приложения. При этом мы сначала копируем файл зависимостей и устанавливаем их, чтобы кеширование слоев Docker использовалось на полную мощность, что сокращает время сборки в будущем. В конечном итоге это создает оптимизированную среду для запуска вашего Python приложения.
🔝 Наш чат для обсуждений |🚀 Буст для канала