2026-06-01 07:46:56 +03:30
|
|
|
ARG DOTNET_IMAGE=mcr.microsoft.com/dotnet/aspnet:10.0-alpine
|
|
|
|
|
ARG SDK_IMAGE=mcr.microsoft.com/dotnet/sdk:10.0-alpine
|
2026-05-31 14:46:05 +03:30
|
|
|
|
2026-06-01 07:46:56 +03:30
|
|
|
# ── Build ─────────────────────────────────────────────────────────────────────
|
|
|
|
|
FROM ${SDK_IMAGE} AS build
|
|
|
|
|
WORKDIR /src
|
2026-05-31 15:17:07 +03:30
|
|
|
|
2026-06-01 07:46:56 +03:30
|
|
|
COPY SoroushAsadi.Web.csproj ./
|
|
|
|
|
RUN dotnet restore --runtime linux-musl-x64
|
2026-05-31 12:47:02 +03:30
|
|
|
|
|
|
|
|
COPY . .
|
2026-06-01 07:46:56 +03:30
|
|
|
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
|
2026-05-31 12:47:02 +03:30
|
|
|
WORKDIR /app
|
2026-05-31 15:17:07 +03:30
|
|
|
|
2026-06-01 07:46:56 +03:30
|
|
|
RUN apk add --no-cache ca-certificates \
|
|
|
|
|
&& addgroup -g 1001 dotnet \
|
|
|
|
|
&& adduser -u 1001 -G dotnet -h /home/dotnet -D dotnet
|
2026-05-31 12:47:02 +03:30
|
|
|
|
2026-06-01 07:46:56 +03:30
|
|
|
COPY --from=build /app/publish ./
|
2026-05-31 12:47:02 +03:30
|
|
|
|
2026-06-01 07:46:56 +03:30
|
|
|
ENV ASPNETCORE_ENVIRONMENT=Production \
|
|
|
|
|
ASPNETCORE_URLS=http://+:3000 \
|
|
|
|
|
DataDir=/data
|
2026-05-31 12:47:02 +03:30
|
|
|
|
2026-06-01 07:46:56 +03:30
|
|
|
RUN mkdir -p /data/uploads && chown -R dotnet:dotnet /data /app
|
|
|
|
|
USER dotnet
|
2026-05-31 12:47:02 +03:30
|
|
|
|
|
|
|
|
VOLUME ["/data"]
|
|
|
|
|
EXPOSE 3000
|
2026-06-01 07:46:56 +03:30
|
|
|
ENTRYPOINT ["dotnet", "SoroushAsadi.Web.dll"]
|