Files
jizhi/Dockerfile.backend
T

50 lines
2.0 KiB
Docker

# 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_URLS=http://0.0.0.0:8080 \
ASPNETCORE_HTTP_PORTS=8080 \
DOTNET_EnableDiagnostics=0
USER $APP_UID
EXPOSE 8080
ENTRYPOINT ["dotnet", "MiaoJiZhang.Api.dll"]