# Etapa 1: Compilación # Usamos la imagen del SDK de .NET 8 para compilar la aplicación FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src # Copiamos el archivo de proyecto y restauramos las dependencias primero # Esto aprovecha el caché de capas de Docker COPY ["Titulares.Api/Titulares.Api.csproj", "Titulares.Api/"] RUN dotnet restore "Titulares.Api/Titulares.Api.csproj" # Copiamos el resto del código fuente COPY . . WORKDIR "/src/Titulares.Api" # Compilamos la aplicación en modo Release y la publicamos en la carpeta /app/publish RUN dotnet publish "Titulares.Api.csproj" -c Release -o /app/publish --no-restore # Etapa 2: Imagen Final # Usamos la imagen de runtime de ASP.NET, que es mucho más ligera FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final WORKDIR /app COPY --from=build /app/publish . # Exponemos el puerto 8080. El backend escuchará en este puerto dentro del contenedor. EXPOSE 8080 # Establecemos el entorno a Producción para que se use appsettings.Production.json ENV ASPNETCORE_ENVIRONMENT=Production # Punto de entrada para ejecutar la aplicación ENTRYPOINT ["dotnet", "Titulares.Api.dll"]