自动构建

This commit is contained in:
2026-07-25 21:15:32 +08:00 Unverified
parent 2ac873c347
commit 1595d6f0c0
12 changed files with 579 additions and 65 deletions
+49
View File
@@ -0,0 +1,49 @@
# syntax=docker/dockerfile:1
FROM --platform=$BUILDPLATFORM node:24-alpine AS frontend
WORKDIR /source
COPY web/package.json web/package-lock.json ./web/
RUN npm --prefix web ci
COPY web/ ./web/
RUN npm --prefix web run build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build
ARG TARGETARCH
WORKDIR /source
COPY .env.example ./
COPY src/Jiaowu.Api/Jiaowu.Api.csproj ./src/Jiaowu.Api/
RUN --mount=type=cache,id=nuget,target=/root/.nuget/packages \
arch="${TARGETARCH/amd64/x64}" && \
dotnet restore ./src/Jiaowu.Api/Jiaowu.Api.csproj --arch "$arch"
COPY src/Jiaowu.Api/ ./src/Jiaowu.Api/
COPY --from=frontend /source/src/Jiaowu.Api/wwwroot/ ./src/Jiaowu.Api/wwwroot/
RUN --mount=type=cache,id=nuget,target=/root/.nuget/packages \
arch="${TARGETARCH/amd64/x64}" && \
dotnet publish ./src/Jiaowu.Api/Jiaowu.Api.csproj \
--configuration Release \
--arch "$arch" \
--no-restore \
--no-self-contained \
--output /app/publish \
-p:BuildFrontendOnPublish=false \
-p:DebugSymbols=false \
-p:DebugType=None
FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT=Production \
ASPNETCORE_HTTP_PORTS=8080 \
DOTNET_EnableDiagnostics=0
EXPOSE 8080
COPY --from=build /app/publish/ ./
ARG UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
appuser
USER appuser
ENTRYPOINT ["dotnet", "Jiaowu.Api.dll"]