Урок по Docker для Data Science для начинающих MLOps / Курс по Python с нуля
👨💻 7 шагов по контейнеризации Python-приложений Контейнеризация Python-приложений с помощью Docker – это отличный способ сделать их более переносимыми, масштабируемыми и безопасными. В этой статье мы рассмотрим 7 простых шагов по контейнеризации Python-приложения с помощью Docker Шаг 1: Установка базового образа Первым шагом является выбор базового образа для контейнера. Мы рекомендуем использовать минимальный базовый образ, например python:3.11-slim. Это позволит уменьшить размер контейнера и повысить его безопасность. FROM python:3.11-slim Шаг 2: Создание непривилегированного пользователя Официальный образ контейнера Python не содержит предустановленного непривилегированного пользователя. Поэтому нам необходимо его создать. Мы создадим пользователя с UID 1000 и GID 1000. RUN groupadd -g 1000 python && \ useradd -r -u 1000 -g python python Шаг 3: Копирование и установка зависимостей Если ваше приложение имеет какие-либо зависимости, то их необходимо скопировать в контейнер и установить. Это можно сделать с помощью инструкций COPY и RUN. COPY requirements.txt . RUN pip install -r requirements.txt Шаг 4: Настройка рабочего каталога Далее необходимо создать внутри контейнера каталог, в котором будет храниться исходный код нашего приложения. Мы создадим каталог /app и убедимся, что он принадлежит непривилегированному пользователю, которого мы создали на шаге 2. RUN mkdir /app && chown python:python /app WORKDIR /app Шаг 5: Скопируйте код приложения Теперь необходимо скопировать исходный код нашего приложения в рабочий каталог. COPY app.py . Шаг 6: Запуск от имени непривилегированного пользователя Нам необходимо убедиться, что процессы, запущенные в нашем контейнере, будут выполняться в непривилегированном режиме. Это можно сделать с помощью инструкции USER. USER 1000 Шаг 7: Задание команды входа Наконец, необходимо указать, какая команда должна быть выполнена при запуске контейнера. Мы хотим выполнить исходный код нашего приложения, поэтому используем инструкцию CMD. CMD ["python", "app.py"] После выполнения этих шагов можно собрать образ Docker с помощью следующей команды: docker build -t my-python-app . Для запуска контейнера можно воспользоваться следующей командой: docker run -p 8080:80 my-python-app Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. Теперь вы можете получить доступ к своему приложению по адресу http://localhost:8080. Ниже приведен пример Dockerfile для простого Python-приложения: FROM python:3.11-slim RUN groupadd -g 1000 python && \ useradd -r -u 1000 -g python python COPY requirements.txt . RUN pip install -r requirements.txt RUN mkdir /app && chown python:python /app WORKDIR /app COPY app.py . USER 1000 CMD ["python", "app.py"] Для создания образа Docker необходимо выполнить следующую команду: docker build -t my-python-app . Для запуска контейнера необходимо выполнить следующую команду: docker run -p 8080:80 my-python-app Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. После этого вы сможете получить доступ к своему приложению по адресу http://localhost:8080. Вот несколько дополнительных советов по контейнеризации Python-приложений: ⬅️ Используйте многоступенчатую сборку, чтобы отделить процесс сборки от среды выполнения. Это позволит сделать образ Docker меньше и эффективнее. ⬅️ Используйте тома для монтирования каталогов с хост-машины в контейнер. Это позволит разрабатывать и отлаживать приложение внутри контейнера без необходимости пересобирать образ при каждом изменении. ⬅️ Использовать реестр Docker для хранения и совместного использования образов Docker.
🛠 Дополнительные инструменты для Python-разработки (Git, Docker и др.) Python – это круто, но одним только интерпретатором не обойтись. Чтобы писать код удобно, безопасно и профессионально, нужны дополнительные инструменты. Давай разберём что использовать, зачем и когда. 🚀 --- ### 📌 1️⃣ Git – контроль версий и командная работа Git – это must-have для любого разработчика. 💡 Зачем он нужен? ✅ Хранит историю изменений (можно вернуться на любой этап разработки) ✅ Позволяет работать в команде без "финальный_финал_v3.py" ✅ Удобная работа с GitHub/GitLab 🔹 Как установить? 👉 [https://git-scm.com/downloads](https://git-scm.com/downloads) 🔹 Как проверить установку? git --version 🔹 Базовые команды: git init # Инициализация репозитория git add . # Добавить файлы в коммит git commit -m "Первый коммит" # Создать коммит git push origin main # Отправить на GitHub 💡 Храни код в GitHub – это удобно! --- ### 📌 2️⃣ Docker – "виртуальный контейнер" для проектов Иногда твой код работает у тебя, но не запускается у других из-за различий в версиях Python, библиотек и ОС. 💡 Docker решает эту проблему! ✅ Позволяет упаковать проект в контейнер (включая Python, библиотеки, зависимости) ✅ Позволяет развернуть проект на любом сервере или ПК без проблем ✅ Используется для деплоя веб-приложений, API и автоматизации 🔹 Как установить? 👉 [https://www.docker.com/get-started](https://www.docker.com/get-started) 🔹 Пример Dockerfile для Python-проекта: FROM python:3.10 WORKDIR /app COPY . . RUN pip install -r requirements.txt CMD ["python", "main.py"] Запустить проект в Docker: docker build -t my_project . docker run -it my_project Теперь твой проект будет работать одинаково на любом компьютере! 🔥 --- ### 📌 3️⃣ Virtualenv & Conda – управление окружениями 💡 Ты уже знаешь, зачем нужны виртуальные окружения, но напомним: ✅ venv – стандартный инструмент в Python ✅ conda – мощный инструмент для Data Science 🔹 Создать окружение (venv): python -m venv venv source venv/bin/activate # macOS/Linux venv\Scripts\activate # Windows 🔹 Создать окружение (Conda): conda create --name my_env python=3.10 conda activate my_env 📌 Если работаешь в Data Science, выбирай Conda! --- ### 📌 4️⃣ Makefile – автоматизация команд Если ты устал вручную вводить длинные команды, используй Makefile. 📌 Создаём `Makefile`: install: pip install -r requirements.txt run: python main.py Теперь для установки библиотек можно просто написать: make install а для запуска проекта: make run 🔹 Работает в macOS/Linux. В Windows – через WSL или `make.exe`. --- ### 📌 5️⃣ Linters & Formatters – чистый код без боли Чтобы код был читабельным и красивым, используют линтеры и форматтеры. ✅ Black – автоматически форматирует код: pip install black black . ✅ Flake8 – находит ошибки в коде: pip install flake8 flake8 . ✅ isort – сортирует импорты: pip install isort isort . 💡 Если хочешь писать как профессионал – используй их! --- ### 📌 6️⃣ Task Runners – управление задачами Иногда нужно автоматизировать тесты, деплой, парсинг данных и другие задачи. ✅ Celery – для фоновый задач ✅ Prefect – для потоков данных ✅ Taskipy – удобный аналог Makefile 📌 Пример Taskipy: pip install taskipy Добавляем в pyproject.toml: [tool.taskipy.tasks] start = "python main.py" Теперь можно запустить проект просто так: task start --- 🔥 Теперь ты знаешь, какие инструменты делают разработку удобнее и быстрее! 👉 В следующем посте разберём, как загружать проекты в GitHub и работать в команде! А пока полный гайд по настройке здесь 👉 [ссылка на статью]