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:

  1. Añada el paquete y su versión a requirements.txt.
  2. Vuelva a construir la imagen: docker build -t mypy:latest build/mypy/.
  3. 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).