50 lines
2.0 KiB
Docker
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"]
|