ARG BO_VERSION=1.0.0-dev ARG BO_CHANNEL=dev ARG BO_BUILD=local ARG BO_COMMIT=unknown FROM node:24.22.1-bookworm-slim AS frontend-build COPY scripts/refresh-container-trust.sh /usr/local/bin/refresh-container-trust RUN sh /usr/local/bin/refresh-container-trust ARG BO_VERSION ARG BO_CHANNEL ARG BO_BUILD ARG BO_COMMIT WORKDIR /src/BoardOil.Web COPY BoardOil.Web/package.json BoardOil.Web/package-lock.json BoardOil.Web/.npmrc ./ RUN npm install --global --ignore-scripts "npm@$(node -p "require('./package.json').engines.npm")" \ && npm ci COPY BoardOil.Web/ ./ COPY MCP.md /src/MCP.md ENV VITE_BO_VERSION=$BO_VERSION ENV VITE_BO_CHANNEL=$BO_CHANNEL ENV VITE_BO_BUILD=$BO_BUILD ENV VITE_BO_COMMIT=$BO_COMMIT RUN npm run build FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS backend-build COPY scripts/refresh-container-trust.sh /usr/local/bin/refresh-container-trust RUN sh /usr/local/bin/refresh-container-trust WORKDIR /src COPY Directory.Build.props ./ COPY BoardOil.Api/ BoardOil.Api/ COPY BoardOil.Abstractions/ BoardOil.Abstractions/ COPY BoardOil.Data.Abstractions/ BoardOil.Data.Abstractions/ COPY BoardOil.Contracts/ BoardOil.Contracts/ COPY BoardOil.Services/ BoardOil.Services/ COPY BoardOil.TasksMd/ BoardOil.TasksMd/ COPY BoardOil.Ef/ BoardOil.Ef/ COPY BoardOil.Mcp.Contracts/ BoardOil.Mcp.Contracts/ RUN dotnet restore BoardOil.Api/BoardOil.Api.csproj --locked-mode RUN dotnet publish BoardOil.Api/BoardOil.Api.csproj -c Release -o /app/publish --no-restore FROM mcr.microsoft.com/dotnet/aspnet:10.0.13-noble AS runtime COPY scripts/refresh-container-trust.sh /usr/local/bin/refresh-container-trust RUN sh /usr/local/bin/refresh-container-trust ARG BO_VERSION ARG BO_CHANNEL ARG BO_BUILD ARG BO_COMMIT WORKDIR /app COPY --from=backend-build /app/publish ./ COPY --from=frontend-build /src/BoardOil.Web/dist ./wwwroot RUN mkdir -p /data VOLUME ["/data"] ENV ASPNETCORE_URLS=http://0.0.0.0:5000 ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED=true ENV BoardOilBuild__Version=$BO_VERSION ENV BoardOilBuild__Channel=$BO_CHANNEL ENV BoardOilBuild__Build=$BO_BUILD ENV BoardOilBuild__Commit=$BO_COMMIT EXPOSE 5000 ENTRYPOINT ["dotnet", "BoardOil.Api.dll"]