Сборка образа интерпретатора кода (mypy)#

Sherpa AIServer использует изолированный Docker-контейнер (mypy) в качестве песочницы для выполнения Python-кода. Образ содержит Python 3.11 и набор научных библиотек (pandas, numpy, matplotlib, openpyxl, pillow и др.) и запускается от непривилегированного пользователя.

Все необходимые файлы находятся в директории build/mypy/ репозитория.

Требования#

  • Docker (версия 20.10+)
  • Доступ к интернету для скачивания зависимостей (или заранее подготовленные wheels — см. ниже)
  • Права на запуск Docker (или sudo)

Готовый образ (скачать)#

Если собирать образ самостоятельно не нужно, готовый mypy можно скачать вместе с остальными образами — ссылка есть в документе с ссылками для скачивания.

Затем загрузите образ:

docker load -i mypy_<version>.tar.gz

Сборка образа#

1. Перейдите в директорию сборки#

cd build/mypy

2. Соберите образ#

docker build -t mypy:latest .
💡 Комментарии к сборке

docker build -t mypy:latest . — собирает Docker-образ из dockerfile в текущей директории

  • -t mypy:latest — тег образа
  • . — контекст сборки (текущая директория)

При сборке Docker установит все Python-пакеты из requirements.txt через pip install.
Это требует доступа к PyPI. Для офлайн-сборки см. секцию ниже.

3. Проверьте, что образ создан#

docker images | grep mypy

Ожидаемый вывод:

mypy   latest   <IMAGE_ID>   ...   ~500MB

Сохранение образа в архив (для переноса на сервер)#

Если образ нужно передать на целевой сервер без доступа к интернету:

# В директории build/mypy/
docker save mypy:latest -o mypy.tar

Готовый файл mypy.tar можно скопировать на сервер через SCP/SFTP и загрузить там:

# На целевом сервере — в директории build/mypy/ или рядом с mypy.tar
docker load -i mypy.tar

Также можно воспользоваться готовыми скриптами:

# Сборка и сохранение (на машине разработчика)
bash build/mypy/mypy_build.sh

# Загрузка образа (на целевом сервере)
bash build/mypy/mypy_load.sh

Офлайн-сборка (без доступа к PyPI)#

Если сервер не имеет доступа к интернету, заранее подготовьте wheels на машине с интернетом:

# На машине с интернетом
pip download -r build/mypy/requirements.txt -d build/mypy/wheels/

Затем раскомментируйте в build/mypy/dockerfile офлайн-режим:

# Раскомментировать:
COPY wheels /wheels
RUN pip install --no-index --find-links=/wheels -r requirements.txt

# Закомментировать:
# RUN pip install -r requirements.txt

И пересоберите образ:

docker build -t mypy:latest build/mypy/

Обновление зависимостей#

Список пакетов хранится в build/mypy/requirements.txt. Для добавления новой библиотеки:

  1. Добавьте строку с нужным пакетом и версией в requirements.txt
  2. Пересоберите образ: docker build -t mypy:latest build/mypy/
  3. Перезапустите сервис интерпретатора кода в compose: docker compose restart aiserver-code-interpreter

Связь с сервисом#

После сборки образ используется сервисом aiserver-code-interpreter в docker-compose.yml.
Убедитесь, что имя образа в compose совпадает с тегом (mypy:latest).