# Dockerfile.api # ---- Etapa de Compilación (Build) ---- # Usamos la imagen del SDK de .NET para compilar la aplicación FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build WORKDIR /src # Copiamos los archivos .csproj y restauramos las dependencias primero # Esto aprovecha el cache de Docker para acelerar futuras compilaciones COPY ["ChatbotApi.csproj", "."] RUN dotnet restore "./ChatbotApi.csproj" # Copiamos el resto del código fuente y construimos la aplicación COPY . . WORKDIR "/src/." RUN dotnet build "ChatbotApi.csproj" -c Release -o /app/build # Publicamos la aplicación en modo Release FROM build AS publish RUN dotnet publish "ChatbotApi.csproj" -c Release -o /app/publish /p:UseAppHost=false # ---- Etapa Final (Runtime) ---- # Usamos la imagen de runtime de ASP.NET, que es mucho más ligera FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS final WORKDIR /app COPY --from=publish /app/publish . # Exponemos el puerto 80, el puerto estándar para HTTP dentro del contenedor EXPOSE 80 # El comando para iniciar la aplicación cuando el contenedor se ejecute ENTRYPOINT ["dotnet", "ChatbotApi.dll"]