Neste post eu apresentei o sharplab.io, uma ferramenta fantástica que nos permite compilar/executar/avaliar código C#, incluindo versões da linguagem que ainda se encontram em desenvolvimento mas, como nenhuma ferramenta é perfeita, mesmo sendo um ótimo recurso o mesmo apresenta algumas limitações:
- No modo execução (run), o mesmo possui algumas restrições com relação ao código que pode ser executado ou não (que se devem a questões de segurança e de uso de recursos, ou seja, totalmente compreensível)
- Sendo um site web o mesmo exige uma conexão com a internet para ser usado(Ok, estou sendo um pouco chato neste ponto :)).
- Pouco ou quase inexistente controle sobre parâmetros usado para compilar o código (por exemplo, versão da linguagem C#, etc).
- Não é possível depurar o código
Assim sendo hoje eu quero apresentar uma nova maneira de atingir um resultado similar, sem as referidas restrições (mas certamente com outras :():
usar o Docker para experimentar novas funcionalidades do C# sem ter que instalar versões preview do .NET localmente ou recorrer a compiladores online.
Este post assume uma experiência básica usando o Docker (mas o mesmo não requer conhecimento de nenhuma funcionalidade esotérica). Basicamente tudo que precisamos fazer é:
- Instalar o Docker
- Baixar a imagem mais atualizada (nightly) do repositório Microsoft:
docker pull mcr.microsoft.com/dotnet/nightly/sdk:latest
- Executar o container:
docker run -it mcr.microsoft.com/dotnet/nightly/sdk /bin/bash
e pronto! Uma vez que o comando 3 tenha sido executado você estará em um terminal (Linux) em um container Doker com a versão de build noturno do .NET (no momento em que escrevi este post, .NET 8 Preview 4). Com isso você pode experimentar novas APIs, novas funcionalidades e muito mais.
Claro que sempre é possível tornar nossas vidas mais fáceis. Por exemplo, a versão atual da imagem que eu escolhi não possui um editor de texto razoável instalado (desculpe fans do vi, eu não sou tão geek assim) e um erro é reportado quanto tentamos instalar o nano. Corrigir este problema não é muito difícil requerendo apenas que executemos os comandos apt update e apt install nano; como eu sou preguiçoso o próximo passo foi automatizar este processo criando um arquivo Dockerfile baseado na imagem nightly da MS e adicionando os comandos citados acima para instalar o nano:
And now you can build a custom image:
docker build . -t dotnet-latest
docker run -it dotnet-latest
Um ponto importante que você deve atentar caso não possua experiência usando o Docker é que o conteúdo de qualquer arquivo modificado durante a execução de um container é descartado assim que encerramos a execução do mesmo (infelizmente apresentar como persistir o conteúdo de tais arquivos esta além do objetivo deste post mas de acordo com o chatgpt, isso não é muito complicado - apenas entre a pergunta "como persistir arquivos entre sessões no docker?" e o mesmo responderá :)).
Have fun!
No comments:
Post a Comment