FROM node:24.21.0-alpine3.23 AS frontend WORKDIR /src COPY web/package.json web/package-lock.json ./web/ COPY packages/core/package.json ./packages/core/package.json RUN cd web && npm ci --no-audit --no-fund COPY packages/core/ ./packages/core/ COPY web/ ./web/ ARG WEBDROP_FRONTEND_COMMIT=unknown ARG WEBDROP_FRONTEND_TAG=unknown ARG WEBDROP_BACKEND_COMMIT=unknown ARG WEBDROP_BACKEND_TAG=unknown ARG WEBDROP_BUILD_TIME=unknown ENV WEBDROP_FRONTEND_COMMIT=$WEBDROP_FRONTEND_COMMIT \ WEBDROP_FRONTEND_TAG=$WEBDROP_FRONTEND_TAG \ WEBDROP_BACKEND_COMMIT=$WEBDROP_BACKEND_COMMIT \ WEBDROP_BACKEND_TAG=$WEBDROP_BACKEND_TAG \ WEBDROP_BUILD_TIME=$WEBDROP_BUILD_TIME RUN npm run build --prefix web FROM mcr.microsoft.com/dotnet/sdk:10.0-noble-aot AS build WORKDIR /src COPY server/Directory.Build.props ./server/ COPY server/src/WebDrop.Api/WebDrop.Api.csproj ./server/src/WebDrop.Api/ COPY server/src/WebDrop.Core/WebDrop.Core.csproj ./server/src/WebDrop.Core/ COPY server/src/WebDrop.Frontend/WebDrop.Frontend.csproj ./server/src/WebDrop.Frontend/ COPY server/src/WebDrop.Storage/WebDrop.Storage.csproj ./server/src/WebDrop.Storage/ RUN dotnet restore server/src/WebDrop.Api/WebDrop.Api.csproj \ --runtime linux-x64 COPY server/ ./server/ COPY --from=frontend /src/web/dist/ ./web/dist/ RUN dotnet publish server/src/WebDrop.Api/WebDrop.Api.csproj \ --configuration Release \ --runtime linux-x64 \ --self-contained true \ --no-restore \ --output /out RUN find /root/.nuget/packages/sqlitepclraw.lib.e_sqlite3 -path '*/runtimes/linux-x64/native/libe_sqlite3.so' \ -exec cp {} /out/libe_sqlite3.so \; \ && test -f /out/libe_sqlite3.so FROM mcr.microsoft.com/dotnet/runtime-deps:10.0 AS runtime WORKDIR /app COPY --from=build /out/webdrop /app/webdrop COPY --from=build /out/libe_sqlite3.so /app/libe_sqlite3.so RUN mkdir -p /data \ && chown 10001:10001 /data \ && chmod 0750 /data ENV ASPNETCORE_URLS=http://+:5000 \ WebDrop__DataDir=/data \ DOTNET_EnableDiagnostics=0 USER 10001:10001 EXPOSE 5000 ENTRYPOINT ["/app/webdrop"]