Сборка образа интерпретатора кода (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. Для добавления новой библиотеки:
- Добавьте строку с нужным пакетом и версией в
requirements.txt - Пересоберите образ:
docker build -t mypy:latest build/mypy/ - Перезапустите сервис интерпретатора кода в compose:
docker compose restart aiserver-code-interpreter
Связь с сервисом#
После сборки образ используется сервисом aiserver-code-interpreter в docker-compose.yml.
Убедитесь, что имя образа в compose совпадает с тегом (mypy:latest).