Implantação e Docker ==================== O Menthor é implantado como uma API FastAPI conteinerizada, projetada para rodar em Máquinas Virtuais Linux utilizando **Docker Engine** e **NGINX**. .. note:: Os valores de porta utilizados nesta documentação (como **8000**) são **fictícios e exemplificativos**. Deve-se utilizar uma porta disponível e de acordo com as políticas de rede da infraestrutura. Ambiente de Servidor -------------------- * **Runtime**: Uvicorn (dentro do container). * **Orquestração**: Docker Engine. * **Proxy Reverso**: NGINX (recomendado para gerir SSL e porta 80/443). Fluxo de Implantação (Step-by-Step) ----------------------------------- ### 1. Construir a Imagem A partir da raiz do projeto, execute o build utilizando o Dockerfile específico para o sandbox: .. code-block:: bash docker build -f Dockerfile.service.sandbox -t menthor-service:latest . ### 2. Executar o Container Ao rodar o container, é vital sincronizar as pastas de datasets e logs para persistência de dados. .. code-block:: bash docker run -d \ --name menthor-sandbox \ -p 8000:8000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /root/menthor_bin/datasets:/app/datasets \ -v /root/menthor_bin/logs:/app/logs \ menthor-service:latest .. danger:: **Configuração Crítica:** Você deve alterar a variável ``SANDBOX_CONTAINER_NAME`` no arquivo ``tools/sandbox_runner_patch.py`` para que o nome seja **idêntico** ao valor usado na flag ``--name`` do comando acima. Caso contrário, as ferramentas de sandbox não conseguirão se comunicar. Manutenção e Monitorização -------------------------- Utilize os comandos abaixo para gerir o ciclo de vida da aplicação no servidor: **Verificar status:** .. code-block:: bash docker ps **Consultar Logs:** .. code-block:: bash docker logs menthor-sandbox **Acesso Interativo:** .. code-block:: bash docker exec -it menthor-sandbox /bin/bash **Remoção Limpa:** .. code-block:: bash docker stop menthor-sandbox && docker rm menthor-sandbox Considerações de NGINX ---------------------- Certifique-se de que a configuração do NGINX aponta o ``proxy_pass`` para a porta escolhida e que o firewall do servidor permite o tráfego necessário.