# syntax=docker/dockerfile:1.7 FROM node:22-bookworm-slim AS admin-build WORKDIR /src/admin-web COPY admin-web/package.json admin-web/package-lock.json ./ RUN --mount=type=cache,target=/root/.npm \ npm ci --no-audit --no-fund COPY admin-web/ ./ RUN npm run build FROM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS api-build WORKDIR /src COPY backend/MiaoJiZhang.sln backend/ COPY backend/MiaoJiZhang.Api/MiaoJiZhang.Api.csproj backend/MiaoJiZhang.Api/ COPY backend/MiaoJiZhang.Domain/MiaoJiZhang.Domain.csproj backend/MiaoJiZhang.Domain/ COPY backend/MiaoJiZhang.Infrastructure/MiaoJiZhang.Infrastructure.csproj backend/MiaoJiZhang.Infrastructure/ RUN --mount=type=cache,target=/root/.nuget/packages \ dotnet restore backend/MiaoJiZhang.Api/MiaoJiZhang.Api.csproj COPY backend/ backend/ ARG BUILD_VERSION=dev RUN --mount=type=cache,target=/root/.nuget/packages \ dotnet publish backend/MiaoJiZhang.Api/MiaoJiZhang.Api.csproj \ --configuration Release \ --output /app/publish \ --no-restore \ --property:UseAppHost=false \ --property:InformationalVersion="$BUILD_VERSION" \ && rm -rf /app/publish/wwwroot \ && mkdir -p /app/publish/wwwroot COPY --from=admin-build /src/admin-web/dist/ /app/publish/wwwroot/ FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS runtime ARG BUILD_VERSION=dev ARG VCS_REF=unknown ARG BUILD_DATE=unknown LABEL org.opencontainers.image.title="JiZhi Backend" \ org.opencontainers.image.description="JiZhi admin web and ASP.NET backend" \ org.opencontainers.image.version="$BUILD_VERSION" \ org.opencontainers.image.revision="$VCS_REF" \ org.opencontainers.image.created="$BUILD_DATE" \ org.opencontainers.image.source="https://gitea.nxsir.cn/nanxun/jizhi" WORKDIR /app COPY --from=api-build --chown=$APP_UID:$APP_UID /app/publish/ ./ ENV ASPNETCORE_HTTP_PORTS=8080 \ DOTNET_EnableDiagnostics=0 USER $APP_UID EXPOSE 8080 ENTRYPOINT ["dotnet", "MiaoJiZhang.Api.dll"]