diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..686257c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,13 @@ +# Ignorar directorios de compilación y artefactos de .NET +**/bin +**/obj + +# Ignorar dependencias de Node.js (se instalan dentro del contenedor) +**/node_modules + +# Ignorar archivos específicos del editor y del sistema operativo +.vscode +.vs +*.suo +*.user +.DS_Store \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile index e2ac7b4..b9dd7e4 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,21 +1,21 @@ -# Usamos la imagen del SDK de .NET 8 para compilar +# --- Etapa 1: Build --- FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src -# CAMBIO: Las rutas ahora incluyen el prefijo 'backend/' para que coincidan -# con la estructura del repositorio, ya que el contexto de build es la raíz. +# Copiamos solo los archivos .csproj para restaurar los paquetes. +# La ruta es correcta porque el contexto es la raíz del proyecto. COPY ["backend/Inventario.API.csproj", "backend/"] RUN dotnet restore "backend/Inventario.API.csproj" -# Copiamos todo el contenido del repositorio al contenedor +# Copiamos el resto de los archivos del proyecto. +# Gracias al .dockerignore, las carpetas 'bin' y 'obj' locales no se copiarán. COPY . . -# CAMBIO: Nos movemos al directorio correcto del proyecto antes de publicar +# Nos movemos al directorio del proyecto para publicarlo WORKDIR "/src/backend" RUN dotnet publish "Inventario.API.csproj" -c Release -o /app/publish /p:UseAppHost=false # --- Etapa 2: Final --- -# Usamos la imagen de runtime de ASP.NET 8, mucho más ligera FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final WORKDIR /app COPY --from=build /app/publish .