Ir para o conteúdo do rodapé
Iron Academy Logo
Aprenda C#
Aprenda C#

Outras categorias

Containerize facilmente aplicações C# com a CLI do .NET

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.

Introdução à CLI do .NET para contêineres

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.

Configuração do aplicativo

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:

  • O Docker está instalado e em execução na máquina dele.
  • Não existem imagens ou contêineres Docker existentes no início.

Isso garante que, quando um novo contêiner for criado, possamos ver claramente as alterações.

Preparando-se para a conteinerização

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:

dotnet publish -o:Linux -a:x64 -p:PublishProfile=DefaultContainer -c:Release

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 no modo release 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 .

Publicação e criação de um contêiner

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:

  • Neste método, não é necessário um Dockerfile.
  • O processo cria a aplicação e a conteineriza em uma única etapa.
  • A imagem base utilizada é o contêiner de tempo de execução do .NET 8 da Microsoft.

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.

Executando o contêiner

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 dá um erro 404, mas navegar para /messages exibe com sucesso os dados esperados.

Tim destaca um ponto importante:

  • O aplicativo é executado no horário UTC dentro do contêiner, que pode ser diferente do fuso horário da máquina local.

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.

Otimizando o tamanho do recipiente

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.

Modificando o arquivo Program.cs, ele define a família de contêineres para jammy-chiseled, uma imagem menor baseada em Ubuntu:

builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");
builder.Services.Configure<ContainerOptions>(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.

Excluindo e recriando contêineres

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:

  • Executar localmente para desenvolvimento e testes.
  • Enviado para um registro de contêineres como o Docker Hub ou o Azure Container Registry.
  • Utilizado como base para uma aplicação web implantada na nuvem.

Conclusão e Considerações Finais

Tim conclui o vídeo reforçando os principais benefícios de usar a CLI do .NET para conteinerização:

  1. Não é necessário um Dockerfile – a CLI do .NET cuida de tudo automaticamente.
  2. Processo rápido e fácil – Com apenas um comando, um aplicativo pode ser conteinerizado.
  3. Imagens menores e otimizadas – Usar jammy-chiseled reduz o tamanho do contêiner.
  4. Implantação perfeita – O contêiner pode ser enviado para diversos serviços em nuvem.

Considerações finais

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.

Hero Worlddot related to Containerize facilmente aplicações C# com a CLI do .NET
Hero Affiliate related to Containerize facilmente aplicações C# com a CLI do .NET

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim