自动构建
This commit is contained in:
+49
@@ -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"]
|
||||
Reference in New Issue
Block a user