Por que seu projeto C# precisa do Docker?
\n\nImagine a situação: você escreveu uma aplicação C# incrível no seu notebook com Windows 11, instalou todas as bibliotecas, configurou o banco de dados, e tudo funciona perfeitamente. Mas quando você envia o projeto para um colega no macOS ou o envia para um servidor Linux, começa o caos: "eu tenho uma versão diferente do .NET", "e o SQL Server?", "no seu código o caminho para os arquivos está hardcoded"... Familiar?
\n\nÉ aqui que a containerização de aplicações C# com Docker entra em ação. O Docker permite empacotar sua aplicação junto com todas as dependências, configurações e até mesmo o sistema operacional em um contêiner leve. E ele funcionará da mesma forma em qualquer lugar: no seu PC, no servidor do colega, na nuvem AWS ou Azure.
\n\nNeste artigo, vamos abordar como containerizar aplicações C# com Docker do início ao fim. Você aprenderá como criar um Dockerfile para ASP.NET Core, como otimizar o tamanho da imagem e como executar tudo isso com um único comando. Vamos lá!
\n\nO que é Docker e por que ele é importante para o desenvolvedor C#?
\n\nDocker é uma plataforma para containerização de aplicações. Um contêiner é um ambiente isolado que contém sua aplicação e tudo o que ela precisa para funcionar: runtime, bibliotecas, variáveis de ambiente, configurações. Ao contrário das máquinas virtuais, os contêineres compartilham o kernel do sistema operacional, portanto, eles iniciam mais rápido e ocupam menos espaço.
\n\nPara o desenvolvedor .NET, o Docker oferece alguns recursos matadores:
\n\n- \n
- Elimina o problema "funciona na minha máquina" — o contêiner garante um ambiente consistente \n
- Simplifica o CI/CD — você cria a imagem uma vez e a usa em todos os lugares \n
- Arquitetura de microsserviços — cada serviço em C# vive em seu próprio contêiner \n
- Escalabilidade — execute facilmente 10 cópias da sua API em segundos \n
- Isolamento — as dependências de um projeto não entram em conflito com as de outro \n
Se você ainda não usa a containerização de aplicações .NET, está na hora de começar. E vamos fazer isso agora mesmo.
\n\nPreparação: o que você precisa instalar
\n\nAntes de começar a containerização C#, certifique-se de ter instalado:
\n\n- \n
- Docker Desktop — baixe do site oficial. Para Windows, certifique-se de ativar o WSL 2 (dicas serão fornecidas durante a instalação). \n
- .NET SDK 8.0 (ou 7.0/9.0 — não é essencial) — baixe do Microsoft. \n
- VS Code ou Visual Studio 2022 — para trabalhar com o código de forma conveniente. \n
Verifique a instalação com os comandos no terminal:
\n\ndocker --version\ndotnet --version\n\nSe ambos os comandos retornarem o número da versão — está tudo pronto para o desenvolvimento Docker para .NET.
\n\nCriando uma aplicação C# simples para containerização
\n\nPara demonstração, vamos usar uma API Web ASP.NET Core mínima. Vamos criar o projeto em uma pasta vazia:
\n\ndotnet new webapi -n MyDockerApp\ncd MyDockerApp\n\nAbra o arquivo Program.cs e simplifique-o para ficar assim (para ficar claro):
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from Dockerized C# App!");\n\napp.Run();\n\nExecute localmente para garantir que tudo funcione:
\n\ndotnet run\n\nAcesse no navegador http://localhost:5000 (ou a porta que o console exibir). Viu a saudação? Ótimo. Agora vamos empacotar esta aplicação no Docker.
Escrevendo o Dockerfile para a aplicação C#
\n\nO Dockerfile é a instrução para construir a imagem. Para <