106 подписчиков
👨💻 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: Скопируйте код приложения
Теперь необходимо скопировать исходный код нашего приложения в рабочий каталог.
Шаг 6: Запуск от имени непривилегированного пользователя
Нам необходимо убедиться, что процессы, запущенные в нашем контейнере, будут выполняться в непривилегированном режиме.
Это можно сделать с помощью инструкции USER.
USER 1000
Шаг 7: Задание команды входа
Наконец, необходимо указать, какая команда должна быть выполнена при запуске контейнера. Мы хотим выполнить исходный код нашего приложения, поэтому используем инструкцию CMD.
После выполнения этих шагов можно собрать образ 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
USER 1000
Для создания образа Docker необходимо выполнить следующую команду:
docker build -t my-python-app .
Для запуска контейнера необходимо выполнить следующую команду:
docker run -p 8080:80 my-python-app
Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. После этого вы сможете получить доступ к своему приложению по адресу http://localhost:8080.
Вот несколько дополнительных советов по контейнеризации Python-приложений:
⬅️ Используйте многоступенчатую сборку, чтобы отделить процесс сборки от среды выполнения. Это позволит сделать образ Docker меньше и эффективнее.
⬅️ Используйте тома для монтирования каталогов с хост-машины в контейнер. Это позволит разрабатывать и отлаживать приложение внутри контейнера без необходимости пересобирать образ при каждом изменении.
⬅️ Использовать реестр Docker для хранения и совместного использования образов Docker.
2 минуты
19 сентября 2023