# --- Etapa 1: Build --- # Usamos la imagen del SDK completa para tener todas las herramientas de compilación FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src # Copiamos los archivos .csproj y restauramos las dependencias COPY ["src/Mercados.Worker/Mercados.Worker.csproj", "Mercados.Worker/"] COPY ["src/Mercados.Infrastructure/Mercados.Infrastructure.csproj", "Mercados.Infrastructure/"] COPY ["src/Mercados.Core/Mercados.Core.csproj", "Mercados.Core/"] RUN dotnet restore "Mercados.Worker/Mercados.Worker.csproj" # Copiamos el resto del código fuente COPY src/. . # Publicamos la aplicación en modo Release WORKDIR "/src/Mercados.Worker" RUN dotnet publish "Mercados.Worker.csproj" -c Release -o /app/publish # --- Etapa 2: Final --- # Usamos la imagen de runtime, que es más ligera FROM mcr.microsoft.com/dotnet/runtime:8.0 AS final # Instalamos las librerías de soporte para globalización e ICU (International Components for Unicode) # Esto es necesario en imágenes de Linux minimalistas para poder usar codificaciones no-UTF8 como windows-1252. RUN apt-get update && apt-get install -y libicu-dev && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=build /app/publish . # El punto de entrada no cambia ENTRYPOINT ["dotnet", "Mercados.Worker.dll"]