¿Por qué su proyecto C# necesita Docker?
\n\nImagine la situación: escribió una excelente aplicación C# en su portátil con Windows 11, instaló todas las bibliotecas, configuró la base de datos y funciona perfectamente. Pero cuando le pasa el proyecto a un compañero en macOS o lo sube a un servidor Linux, comienza el caos: "tengo otra versión de .NET", "¿y dónde está SQL Server?", "en tu código tienes la ruta a los archivos hardcodeada"... ¿Le suena familiar?
\n\nAquí es donde la contenedorización de aplicaciones C# con Docker viene al rescate. Docker le permite empaquetar su aplicación junto con todas sus dependencias, configuraciones e incluso el sistema operativo en un contenedor ligero. Y funcionará igual en todas partes: en su PC, en el servidor de su colega, en la nube de AWS o Azure.
\n\nEn este artículo, analizaremos cómo contenerizar aplicaciones C# con Docker de principio a fin. Aprenderá a crear un Dockerfile para ASP.NET Core, cómo optimizar el tamaño de la imagen y cómo ejecutar todo esto con un solo comando. ¡Vamos allá!
\n\n¿Qué es Docker y por qué lo necesita un desarrollador C#?
\n\nDocker es una plataforma para la contenedorización de aplicaciones. Un contenedor es un entorno aislado que contiene su aplicación y todo lo que necesita para funcionar: runtime, bibliotecas, variables de entorno, configuraciones. A diferencia de las máquinas virtuales, los contenedores utilizan el núcleo del sistema operativo compartido, por lo que se inician más rápido y ocupan menos espacio.
\n\nPara un desarrollador .NET, Docker ofrece varias características killer:
\n\n- \n
- Elimina el problema "en mi máquina funciona" — el contenedor garantiza un entorno idéntico \n
- Simplifica el CI/CD — construye la imagen una vez y la usa en todas partes \n
- Arquitectura de microservicios — cada servicio en C# vive en su propio contenedor \n
- Escalabilidad — fácilmente ejecute 10 copias de su API en un par de segundos \n
- Aislamiento — las dependencias de un proyecto no entran en conflicto con otro \n
Si aún no está utilizando la contenedorización de aplicaciones .NET, es hora de empezar. Y lo haremos ahora mismo.
\n\nPreparación: qué necesita instalar
\n\nAntes de comenzar con la contenedorización de C#, asegúrese de tener instalado:
\n\n- \n
- Docker Desktop — descárguelo del sitio oficial. Para Windows, asegúrese de habilitar WSL 2 (recibirá indicaciones durante la instalación). \n
- .NET SDK 8.0 (o 7.0/9.0 — no es crítico) — descárguelo de Microsoft. \n
- VS Code o Visual Studio 2022 — para trabajar cómodamente con el código. \n
Verifique la instalación con los comandos en la terminal:
\n\ndocker --version\ndotnet --version\n\nSi ambos comandos devuelven un número de versión, todo está listo para el desarrollo Docker para .NET.
\n\nCreando una aplicación C# simple para contenerizar
\n\nPara la demostración, tomaremos una API web mínima de ASP.NET Core. Crearemos el proyecto en una carpeta vacía:
\n\ndotnet new webapi -n MyDockerApp\ncd MyDockerApp\n\nAbra el archivo Program.cs y simplifíquelo de la siguiente manera (para que sea claro):
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from Dockerized C# App!");\n\napp.Run();\n\nEjecútelo localmente para asegurarse de que funciona:
\n\ndotnet run\n\nVaya a su navegador a http://localhost:5000 (o al puerto que muestre la consola). ¿Ve el saludo? Excelente. Ahora empaquetemos esta aplicación en Docker.
Escribiendo el Dockerfile para la aplicación C#
\n\nEl Dockerfile es la instrucción para construir la imagen. Para <