ARG DOTNET_IMAGE=mcr.microsoft.com/dotnet/aspnet:10.0-alpine
ARG SDK_IMAGE=mcr.microsoft.com/dotnet/sdk:10.0-alpine

# ── Build ─────────────────────────────────────────────────────────────────────
FROM ${SDK_IMAGE} AS build
WORKDIR /src

COPY SoroushAsadi.Web.csproj ./
RUN dotnet restore --runtime linux-musl-x64

COPY . .
RUN dotnet publish SoroushAsadi.Web.csproj \
      --no-restore \
      --runtime linux-musl-x64 \
      --self-contained false \
      -c Release \
      -o /app/publish

# ── Runtime ───────────────────────────────────────────────────────────────────
FROM ${DOTNET_IMAGE} AS runner
WORKDIR /app

RUN apk add --no-cache ca-certificates \
 && addgroup -g 1001 dotnet \
 && adduser  -u 1001 -G dotnet -h /home/dotnet -D dotnet

COPY --from=build /app/publish ./

ENV ASPNETCORE_ENVIRONMENT=Production \
    ASPNETCORE_URLS=http://+:3000 \
    DataDir=/data

RUN mkdir -p /data/uploads && chown -R dotnet:dotnet /data /app
USER dotnet

VOLUME ["/data"]
EXPOSE 3000
ENTRYPOINT ["dotnet", "SoroushAsadi.Web.dll"]
