Hola de nuevo a todos, en este tutorial aprenderemos a usar herramientas del dia a dia,
Recuerda compartir el sitio con tus amigos, y compartir el canal de Youtube para completar la meta 2025 de llegar a los 10K suscriptores, asi que Dale Like! y suscribite!
ahora si, el objetivo principal de este tutorial es demostrar que crear, documentar, dockerizar y desplegar una API en la nube puede ser simple, rápido y eficiente, incluso si eres principiante en el ecosistema .NET.
Que herramientas usaremos:
-
ASP.NET Core para construir una API mínima en C#
-
Swagger (OpenAPI) para documentarla automáticamente
-
Docker para empacarla en un contenedor portable
-
Docker Hub para compartirla públicamente
-
Azure Web App for Containers para desplegarla en la nube sin complicaciones
-
CORS para que pueda ser consumida desde navegadores y clientes externos
Paso 1: Crear el proyecto
Debemos abrir una nueva terminal:dotnet new webapi -n HelloWorldApicd HelloWorldApiPaso 2: Verifica y ajusta tu archivo .csproj ->
esto es importante porque Docker puede fallar si las versiones no son compatibles, lo digo por experiencia propia<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net8.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.0" /><PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" /></ItemGroup></Project>Paso 3: Reemplaza el contenido de Program.cs
te explico mas a detalle mas adelante como funciona el codigovar builder = WebApplication.CreateBuilder(args);// Swagger y CORSbuilder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();builder.Services.AddCors(options =>{options.AddDefaultPolicy(policy =>{policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();});});// Escuchar en todas las IPs dentro del contenedorbuilder.WebHost.UseUrls("http://0.0.0.0:80");var app = builder.Build();app.UseCors();app.UseSwagger();app.UseSwaggerUI();app.MapGet("/", () => "Hello World desde ASP.NET Core! y Azure Guides!");app.Run();
Paso 4: Ejecutar localmentedotnet run
Y luego abre:
http://localhost:5000/http://localhost:5000/swaggerPaso 5: Crear un Dockerfile
Dentro del proyecto agrega un nuevo archivo:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /srcCOPY . .RUN dotnet publish -c Release -o /appFROM mcr.microsoft.com/dotnet/aspnet:8.0WORKDIR /appCOPY --from=build /app .EXPOSE 80ENTRYPOINT ["dotnet", "HelloWorldApi.dll"]
Paso 6: Build y ejecución en Dockerdocker build -t tu_usuario_docker/helloworldapi .docker run -d -p 8080:80 tu_usuario_docker/helloworldapi
Accede desde tu navegador a:http://localhost:8080/http://localhost:8080/swagger
Paso 7: Subir a Docker Hub
Aca debes ya crear un usuario en Docker hub, lo puedes hacer directo con el login de Google
Abre una terminal :docker logindocker push tu_usuario_docker/helloworldapi
Paso 8: Desplegar en Azure Web AppOpción 1: Azure Portal
Crear App Web Linux
Tipo de publicación: Docker Container
Imagen pública: tu_usuario_docker/helloworldapi:latest
Opción 2: Azure CLI
az webapp create \--resource-group tu-grupo \--plan tu-plan-linux \--name helloworld-csharp-api \--deployment-container-image-name tu_usuario_docker/helloworldapi
Con solo un archivo .csproj, un Program.cs, un Dockerfile y comandos básicos, puedes tener una API .NET en producción, con documentación Swagger, CORS activado, Dockerizada y desplegada en Azure.Esta es una base profesional para proyectos reales, y puede extenderse fácilmente a microservicios, APIs REST complejas, bases de datos, autenticación y mucho más.
Explicación línea por línea de Program.cs
var builder = WebApplication.CreateBuilder(args);Crea el objeto principal que configura la aplicación ASP.NET Core.
builder.Services.AddEndpointsApiExplorer();Habilita la exploración automática de endpoints para Swagger.
builder.Services.AddSwaggerGen();Agrega el generador Swagger para documentar la API.
builder.Services.AddCors(options =>{options.AddDefaultPolicy(policy =>{policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();});});Configura CORS para aceptar peticiones desde cualquier origen, método o encabezado.
builder.WebHost.UseUrls("http://0.0.0.0:80");Hace que la aplicación escuche en todas las direcciones IP disponibles (necesario para Docker).
var app = builder.Build();Construye la aplicación con las configuraciones definidas.
app.UseCors();Activa el middleware de CORS para permitir solicitudes externas.
app.UseSwagger();Habilita el middleware para generar la documentación Swagger en tiempo de ejecución.
app.UseSwaggerUI();Muestra la interfaz web interactiva de Swagger.
app.MapGet("/", () => "Hello World desde ASP.NET Core! y Azure Guides!");Define un endpoint GET que devuelve un mensaje de texto como respuesta.
app.Run();Inicia el servidor web y deja la aplicación corriendo.