Construção da imagem do interpretador de código (mypy)#

O Sherpa AIServer usa um contêiner Docker isolado (mypy) como ambiente seguro para executar código Python. A imagem inclui Python 3.11 e bibliotecas científicas (pandas, numpy, matplotlib, openpyxl, pillow, entre outras) e é executada por um usuário sem privilégios.

Todos os arquivos necessários estão no diretório build/mypy/ do repositório.

Requisitos#

  • Docker (versão 20.10 ou posterior)
  • Acesso à Internet para baixar dependências (ou pacotes wheel preparados previamente; veja abaixo)
  • Permissão para executar o Docker (ou sudo)

Imagem pronta (download)#

Se não precisar construir a imagem, você pode baixar a imagem mypy junto com as demais imagens. Os links de download estão nos documentos da versão.

Depois, carregue a imagem:

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

Construção da imagem#

1. Acesse o diretório de construção#

cd build/mypy

2. Construa a imagem#

docker build -t mypy:latest .
💡 Observações sobre a construção

docker build -t mypy:latest . constrói uma imagem Docker a partir do Dockerfile no diretório atual.

  • -t mypy:latest: tag da imagem
  • .: contexto de construção (diretório atual)

Durante a construção, o Docker instala todos os pacotes Python de requirements.txt com pip install. Isso exige acesso ao PyPI. Para construir sem conexão, consulte a seção abaixo.

3. Verifique se a imagem foi criada#

docker images | grep mypy

Saída esperada:

mypy   latest   <IMAGE_ID>   ...   ~500MB

Como salvar a imagem em um arquivo para transferência#

Se precisar transferir a imagem para um servidor de destino sem acesso à Internet:

# In the build/mypy/ directory
docker save mypy:latest -o mypy.tar

Você pode copiar o arquivo mypy.tar para o servidor via SCP/SFTP e carregá-lo:

# On the target server — in build/mypy/ or next to mypy.tar
docker load -i mypy.tar

Você também pode usar os scripts incluídos:

# Build and save (developer machine)
bash build/mypy/mypy_build.sh

# Load the image (on the target server)
bash build/mypy/mypy_load.sh

Construção offline (sem acesso ao PyPI)#

Se o servidor de destino não tiver acesso à Internet, prepare os pacotes wheel em uma máquina conectada:

# On a machine with internet
pip download -r build/mypy/requirements.txt -d build/mypy/wheels/

Em seguida, habilite o modo offline em build/mypy/dockerfile: copie os pacotes wheel e use --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

Reconstrua a imagem:

docker build -t mypy:latest build/mypy/

Atualização de dependências#

A lista de pacotes está em build/mypy/requirements.txt. Para adicionar uma biblioteca:

  1. Adicione o pacote e sua versão a requirements.txt.
  2. Reconstrua a imagem: docker build -t mypy:latest build/mypy/.
  3. Reinicie o serviço do interpretador de código no Compose: docker compose restart aiserver-code-interpreter.

Integração com o serviço#

Após a construção, a imagem é usada pelo serviço aiserver-code-interpreter em docker-compose.yml. Confirme que o nome da imagem no Compose corresponde à tag (mypy:latest).