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.Storage/WebDrop.Storage.csproj ./server/src/WebDrop.Storage/
RUN dotnet restore server/src/WebDrop.Api/WebDrop.Api.csproj \
    --runtime linux-x64
COPY server/ ./server/
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"]
