# Use the official Microsoft ASP.NET Core runtime as a base image
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# Use the official Microsoft ASP.NET Core build image
FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build
WORKDIR /src

# Copy the solution file and restore dependencies
COPY ["ODCWeb.sln", "."]
COPY ["ODCWeb/ODCWeb.csproj", "ODCWeb/"]
COPY ["ODCWeb.Data/ODCWeb.DataAccess.csproj", "ODCWeb.Data/"]
COPY ["ODCWeb.Models/ODCWeb.Models.csproj", "ODCWeb.Models/"]
COPY ["ODCWeb.Utility/ODCWeb.Utility.csproj", "ODCWeb.Utility/"]

# Restore dependencies for each project
RUN dotnet restore "ODCWeb.sln"

# Copy the rest of the source code and build the application
COPY . .
WORKDIR /src/ODCWeb
RUN dotnet build "ODCWeb.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ODCWeb.csproj" -c Release -o /app/publish /p:UseAppHost=false

# Final stage: build runtime image
FROM base AS final
RUN apk add --no-cache tzdata
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ODCWeb.dll"]
