Files
Clarity/Clarity.Server/Dockerfile
T

44 lines
1.4 KiB
Docker

# -- Stage 1: Build Vite frontend ---------------------------------------------
# Build context is ClarityStack/ root so Directory.*.props are available.
FROM node:22-alpine AS frontend
WORKDIR /frontend
COPY Clarity/frontend/package.json Clarity/frontend/package-lock.json* ./
RUN npm ci --legacy-peer-deps
COPY Clarity/frontend/ ./
RUN npm run build
# Output lands in /frontend/dist
# -- Stage 2: Build .NET server -----------------------------------------------
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
# Copy central package/build props first (at ClarityStack/ root)
COPY Directory.Packages.props ./
COPY Directory.Build.props ./
COPY ["Clarity/Clarity.Server/Clarity.Server.csproj", "Clarity.Server/"]
COPY ["Clarity/Clarity.ServiceDefaults/Clarity.ServiceDefaults.csproj", "Clarity.ServiceDefaults/"]
RUN dotnet restore "Clarity.Server/Clarity.Server.csproj"
# Copy only the Clarity/ subtree so OPC/, gateway/ etc. are excluded
COPY Clarity/ .
# Embed the Vite build into wwwroot (mirrors Aspire PublishWithContainerFiles)
COPY --from=frontend /frontend/dist ./Clarity.Server/wwwroot/
RUN dotnet publish "Clarity.Server/Clarity.Server.csproj" \
-c Release -o /app/publish
# -- Stage 3: Runtime ----------------------------------------------------------
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY --from=build /app/publish .
EXPOSE 8080
ENTRYPOINT ["dotnet", "Clarity.Server.dll"]