47 lines
1.7 KiB
Docker
47 lines
1.7 KiB
Docker
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/
|
|
RUN npm run build --prefix web
|
|
|
|
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
|
WORKDIR /src
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends clang zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
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"]
|