Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
9m 57s
Os contêineres são uma ferramenta poderosa, mas para muitos desenvolvedores, a ideia de colocar um aplicativo C# em um contêiner pode parecer complexa demais. Configurar um Dockerfile e gerenciar dependências manualmente pode ser complicado. No entanto, como Tim Corey explica em seu vídeo, a CLI do .NET simplifica esse processo, permitindo que os desenvolvedores conteinerizem seus aplicativos sem a necessidade de um Dockerfile.
Neste artigo, vamos analisar mais detalhadamente a conteinerização de uma aplicação C# usando a abordagem passo a passo de Tim, apresentada em seu vídeo " Containerize sua aplicação C# facilmente com a CLI do .NET ". Seguindo as orientações de Tim, entenderemos como publicar uma aplicação .NET em um contêiner Docker sem esforço.
No início do vídeo, Tim explica a necessidade de conteinerização. Ele destaca que, embora os contêineres sejam uma ótima ferramenta, o processo de configurar um Dockerfile corretamente pode ser complexo.
Em vez de criar um Dockerfile manualmente, Tim apresenta uma abordagem mais fácil usando a CLI do .NET . Este método permite que os desenvolvedores criem um aplicativo em contêiner sem precisar escrever um Dockerfile manualmente.
Tim também esclarece que este vídeo faz parte de sua série de treinamentos de 10 minutos, que se concentra em introduções rápidas e eficazes a tópicos técnicos.
Tim começa usando um aplicativo Web API minimalista como exemplo. O aplicativo contém um único endpoint chamado /messages, que retorna alguns dados.
Para demonstrar o comportamento da aplicação antes da conteinerização, Tim a executa localmente. Ao acessar o endpoint /messages, ele confirma que funciona corretamente fora de um contêiner.
Antes de prosseguir com a conteinerização, ele também verifica se:
Isso garante que, quando um novo contêiner for criado, possamos ver claramente as alterações.
Para conteinerizar a aplicação, Tim passa a usar a linha de comando dentro do diretório do projeto. Em seguida, ele executa o seguinte comando:
Tim explica cada parte do comando:
-o:Linux → Publica o aplicativo para um contêiner baseado em Linux.-a:x64 → Especifica a arquitetura como 64 bits.-p:PublishProfile=DefaultContainer → Usa as configurações padrão do contêiner.-c:Release → Publica o aplicativo em modo de lançamento para melhor desempenho.Tim enfatiza que os contêineres Linux são preferíveis aos contêineres Windows porque os contêineres Windows servem principalmente como uma ponte para aplicativos .NET Framework .
Após a execução do comando de publicação, Tim explica que a CLI do .NET determinará automaticamente as configurações necessárias e empacotará tudo em um contêiner. Ele destaca que:
Após a publicação, ele verifica o Docker Desktop e confirma que a nova imagem do contêiner, background-demo, foi criada. O tamanho inicial do contêiner é de 221 MB.
Tim tranquiliza os espectadores, garantindo que esse tamanho poderá ser reduzido posteriormente.
Para testar a aplicação em contêiner, Tim inicia o contêiner diretamente do Docker Desktop. Como ainda não há contêineres em execução, ele clica em "Executar" e define uma configuração opcional:
Ele mapeia a porta interna do contêiner (atribuída aleatoriamente) para a porta 8080 na máquina host.
Após a inicialização, ele acessa o aplicativo usando um navegador da web. Inicialmente, acessar o URL raiz resulta em um erro 404, mas navegar até /messages exibe com sucesso os dados esperados.
Tim destaca um ponto importante:
Ele também observa que, como o aplicativo foi publicado em modo de lançamento, a interface do usuário Swagger está desativada por padrão.
Neste momento, o tamanho padrão do contêiner é de 221 MB, o que Tim reconhece ser bastante grande. Para reduzir o tamanho, ele introduz uma imagem base mais clara.
Ao modificar o arquivo Program.cs, ele define a família de contêineres como jammy-chiseled, uma imagem menor baseada em Ubuntu:
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");builder.Services.Configure(Of ContainerOptions)(Sub(options) options.ContainerFamily = "jammy-chiseled")Em seguida, ele executa novamente o comando de publicação e, após reconstruir o contêiner, verifica o tamanho da imagem mais uma vez.
O novo tamanho da imagem é de 113 MB - uma redução de cerca de 100 MB! Apesar do tamanho menor, o aplicativo funciona de forma idêntica.
Tim demonstra como excluir o contêiner para limpar o espaço de trabalho. No entanto, a imagem do Docker permanece disponível, portanto o contêiner pode ser recriado, se necessário.
Ele enfatiza que, uma vez construído o contêiner, ele pode ser:
Tim conclui o vídeo reforçando os principais benefícios de usar a CLI do .NET para conteinerização:
jammy-chiseled reduz o tamanho do contêiner.A abordagem de Tim para conteinerizar aplicações C# com a CLI do .NET é simples, rápida e eficaz. Seguindo seu método, os desenvolvedores podem criar e otimizar contêineres sem precisar de conhecimento profundo de Docker.
Ao aproveitar contêineres Linux, imagens base otimizadas e comandos de publicação simplificados, essa técnica permite que os desenvolvedores conteinerizem seus aplicativos de forma eficiente e com o mínimo de esforço.
Se você quiser se aprofundar no assunto, não deixe de conferir o vídeo de Tim Corey. Ele fornece uma descrição clara e passo a passo de todo o processo.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy