0004 — CBotBuilder roda no host web em um container de sandbox
Contexto
Compilar um cBot do usuário significa executar MSBuild não confiável — código arbitrário em tempo de compilação (targets, geradores de fonte, scripts de restore). Precisa do socket Docker para girar um container SDK. Nós executam containers de trading e não devem também ter privilégios de compilação.
Decisão
CBotBuilder roda no host web (que já tem o socket Docker), dentro de um container SDK descartável com:
- um diretório
/workbind-montado (apenas as entradas/saídas da compilação, não o filesystem do host); - um volume compartilhado
app-nuget-cachepara desempenho de restore; - sem acesso à rede do host além do que o restore precisa.
Então MSBuild não confiável não pode alcançar o filesystem ou rede do host. Containers de execução/backtest, por contraste, rodam em nós escolhidos por NodeScheduler.
Consequências
- O privilégio de compilação (socket Docker) é confinado ao host web; nós executam apenas imagens de trading permitidas.
- Cada compilação é isolada em um container descartável — uma compilação maliciosa não pode persistir ou escapar.
- O host web deve ter um socket Docker disponível; este é um requisito de implantação, não opcional.