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.


    Надеюсь, вы сделаете это быстрее 😎
+1
1
+1
7
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *