1 год назад
👨‍💻 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.
114 читали · 4 года назад
Контейнеризация в Python. Часть 1
Разработка в Python в локальных средах может стать нелёгкой задачей, если одновременно работать более чем над одним проектом. Бутстрэппинг (начальная загрузка) проекта может потребовать некоторого времени: нужно согласовать версии, а также настроить зависимости и конфигурацию...