mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 15:08:47 -07:00
e6e5c9990f
CodeRabbit on PR #49: the Docker build stages still used node:20-alpine, which vite 7 (>=20.19/22.12) and react-router 8 (>=22.22) no longer support. Bump NODE_VERSION to 22 in both Dockerfiles and declare engines.node >=22.22.0 in both app manifests so local installs on an old Node fail loudly instead of at build time.
56 lines
1.6 KiB
Desktop File
56 lines
1.6 KiB
Desktop File
ARG DOTNET_VERSION=9.0
|
|
ARG NODE_VERSION=22
|
|
|
|
FROM node:${NODE_VERSION}-alpine AS admin-ui
|
|
WORKDIR /ui
|
|
COPY DorkNet.Server/admin-ui/package.json DorkNet.Server/admin-ui/package-lock.json* ./
|
|
RUN npm install --no-fund --no-audit --loglevel=error
|
|
COPY DorkNet.Server/admin-ui/ ./
|
|
RUN mkdir -p /wwwroot/admin \
|
|
&& npm run build
|
|
|
|
FROM node:${NODE_VERSION}-alpine AS site
|
|
WORKDIR /ui
|
|
COPY DorkNet.Server/site/package.json DorkNet.Server/site/package-lock.json* ./
|
|
RUN npm install --no-fund --no-audit --loglevel=error
|
|
COPY DorkNet.Server/site/ ./
|
|
RUN mkdir -p /wwwroot/site \
|
|
&& npm run build
|
|
|
|
FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} AS build
|
|
ARG PROJECT_PATH
|
|
WORKDIR /src
|
|
|
|
COPY . .
|
|
COPY --from=admin-ui /wwwroot/admin/ DorkNet.Server/wwwroot/admin/
|
|
COPY --from=site /wwwroot/site/ DorkNet.Server/wwwroot/site/
|
|
RUN dotnet publish "${PROJECT_PATH}" -c Release \
|
|
-p:SkipAdminUIBuild=true \
|
|
-p:DorkNetServiceContainerPublish=true \
|
|
-o /app/publish
|
|
|
|
FROM mcr.microsoft.com/dotnet/aspnet:${DOTNET_VERSION} AS runtime
|
|
ARG APP_DLL
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
USER app
|
|
|
|
COPY --from=build --chown=app:app /app/publish .
|
|
|
|
ENV ASPNETCORE_ENVIRONMENT=Production \
|
|
ASPNETCORE_URLS=http://0.0.0.0:8080 \
|
|
DOTNET_RUNNING_IN_CONTAINER=true \
|
|
DOTNET_PRINT_TELEMETRY_MESSAGE=false \
|
|
APP_DLL=${APP_DLL}
|
|
|
|
EXPOSE 8080
|
|
|
|
HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=3 \
|
|
CMD curl --fail --silent http://localhost:8080/healthz || exit 1
|
|
|
|
ENTRYPOINT ["sh", "-c", "dotnet \"$APP_DLL\""]
|