32 lines
1.1 KiB
Docker
32 lines
1.1 KiB
Docker
# 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"] |