Construcción de la imagen del intérprete de código (mypy)#
Sherpa AIServer utiliza un contenedor Docker aislado (mypy) como entorno seguro para ejecutar código Python. La imagen incluye Python 3.11 y bibliotecas científicas (pandas, numpy, matplotlib, openpyxl, pillow, entre otras) y se ejecuta con un usuario sin privilegios.
Todos los archivos necesarios se encuentran en el directorio build/mypy/ del repositorio.
Requisitos#
- Docker (versión 20.10 o posterior)
- Acceso a Internet para descargar dependencias (o paquetes wheel preparados previamente; consulte más abajo)
- Permisos para ejecutar Docker (o
sudo)
Imagen preparada (descarga)#
Si no necesita construir la imagen, puede descargar la imagen mypy junto con las demás imágenes. Los enlaces de descarga figuran en los documentos de la versión.
Después, cargue la imagen:
docker load -i mypy_<version>.tar.gz
Construcción de la imagen#
1. Acceda al directorio de construcción#
cd build/mypy
2. Construya la imagen#
docker build -t mypy:latest .
💡 Notas sobre la construcción
docker build -t mypy:latest . construye una imagen Docker a partir del Dockerfile del directorio actual.
-t mypy:latest: etiqueta de la imagen.: contexto de construcción (directorio actual)
Durante la construcción, Docker instala todos los paquetes de Python de requirements.txt mediante pip install. Para ello se necesita acceso a PyPI. Si va a construir sin conexión, consulte la sección siguiente.
3. Compruebe que se creó la imagen#
docker images | grep mypy
Resultado esperado:
mypy latest <IMAGE_ID> ... ~500MB
Guardar la imagen en un archivo para trasladarla#
Si necesita trasladar la imagen a un servidor de destino sin acceso a Internet:
# In the build/mypy/ directory
docker save mypy:latest -o mypy.tar
Puede copiar el archivo mypy.tar al servidor mediante SCP/SFTP y cargarlo allí:
# On the target server — in build/mypy/ or next to mypy.tar
docker load -i mypy.tar
También puede utilizar los scripts incluidos:
# Build and save (developer machine)
bash build/mypy/mypy_build.sh
# Load the image (on the target server)
bash build/mypy/mypy_load.sh
Construcción sin conexión (sin acceso a PyPI)#
Si el servidor de destino no tiene acceso a Internet, prepare los paquetes wheel en una máquina conectada:
# On a machine with internet
pip download -r build/mypy/requirements.txt -d build/mypy/wheels/
Después, habilite el modo sin conexión en build/mypy/dockerfile: copie los paquetes wheel y utilice --find-links.
# Uncomment:
COPY wheels /wheels
RUN pip install --no-index --find-links=/wheels -r requirements.txt
# Comment out:
# RUN pip install -r requirements.txt
Vuelva a construir la imagen:
docker build -t mypy:latest build/mypy/
Actualización de dependencias#
La lista de paquetes está en build/mypy/requirements.txt. Para añadir una biblioteca:
- Añada el paquete y su versión a
requirements.txt. - Vuelva a construir la imagen:
docker build -t mypy:latest build/mypy/. - Reinicie el servicio del intérprete de código en Compose:
docker compose restart aiserver-code-interpreter.
Integración con el servicio#
Una vez construida, la imagen la utiliza el servicio aiserver-code-interpreter en docker-compose.yml. Compruebe que el nombre de la imagen en Compose coincide con la etiqueta (mypy:latest).