# ---- build stage ----
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src

# Copy solution and project files first for layer caching
COPY SecureCom.sln ./
COPY src/SecureCom.Abstractions/SecureCom.Abstractions.csproj src/SecureCom.Abstractions/
COPY src/SecureCom.ServiceDefaults/SecureCom.ServiceDefaults.csproj src/SecureCom.ServiceDefaults/
COPY src/SecureCom.AuthBackend/SecureCom.AuthBackend.csproj src/SecureCom.AuthBackend/
COPY src/SecureCom.SecureComBackend/SecureCom.SecureComBackend.csproj src/SecureCom.SecureComBackend/
COPY src/SecureCom.MergeBackend/SecureCom.MergeBackend.csproj src/SecureCom.MergeBackend/
RUN dotnet restore

# Copy everything else and publish
COPY src/ ./src/
RUN dotnet publish src/SecureCom.AuthBackend/SecureCom.AuthBackend.csproj -c Release -o /app/authbackend --no-restore
RUN dotnet publish src/SecureCom.SecureComBackend/SecureCom.SecureComBackend.csproj -c Release -o /app/securecombackend --no-restore
RUN dotnet publish src/SecureCom.MergeBackend/SecureCom.MergeBackend.csproj -c Release -o /app/mergebackend --no-restore

# ---- auth backend runtime ----
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS authbackend
WORKDIR /app
COPY --from=build /app/authbackend ./
EXPOSE 8080
ENV ASPNETCORE_URLS=http://+:8080
ENTRYPOINT ["dotnet", "SecureCom.AuthBackend.dll"]

# ---- secure com backend runtime ----
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS securecombackend
WORKDIR /app
COPY --from=build /app/securecombackend ./
EXPOSE 8080
ENV ASPNETCORE_URLS=http://+:8080
ENTRYPOINT ["dotnet", "SecureCom.SecureComBackend.dll"]

# ---- merge backend runtime ----
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS mergebackend
WORKDIR /app
COPY --from=build /app/mergebackend ./
EXPOSE 8080
ENV ASPNETCORE_URLS=http://+:8080
ENTRYPOINT ["dotnet", "SecureCom.MergeBackend.dll"]
