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:
- Adicione o pacote e sua versão a
requirements.txt. - Reconstrua a imagem:
docker build -t mypy:latest build/mypy/. - 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).