This commit is contained in:
mmrbnjd
2025-10-18 18:04:58 +03:30
parent bca445db1a
commit 93dcaa65f0
10 changed files with 40 additions and 89 deletions

View File

@@ -1,86 +1,65 @@
# مرحله ۱: Build پروژه Blazor WASM با .NET 9
# اینجا باید از SDK استفاده کنید نه aspnet
# مرحله ۱: Build با caching بهتر
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src
# نصب وابستگی‌ها برای emscripten (python3 + سایر ابزارها)
# نصب dependencyها (apt-get) در یک layer
RUN apt-get update && apt-get install -y python3 make cmake clang zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# کپی کردن فایل‌های پروژه
# کپی csprojها جداگانه برای cache بهتر
COPY TaxPayerFull/Front.csproj Front/
COPY Shared/Shared.csproj Shared/
COPY . .
# پاک‌سازی workloadهای قدیمی (اختیاری)
RUN dotnet workload clean
# نصب wasm-tools برای Blazor
# نصب wasm-tools (فقط اگر تغییر کند cache می‌ماند)
RUN dotnet workload install wasm-tools
# انتشار (Publish) خروجی در حالت Release
# restore تنها بر اساس csprojها
RUN dotnet restore Front/Front.csproj
# کپی باقی پروژه
COPY TaxPayerFull/. TaxPayerFull/
COPY Shared/. Shared/
# انتشار Blazor WASM
RUN dotnet publish "TaxPayerFull/Front.csproj" -c Release -o /app \
-p:TreatWarningsAsErrors=false \
-p:RunAOTCompilation=false \
-p:PublishTrimmed=false
# مرحله ۲: سرو کردن با Nginx
# مرحله ۲: Nginx
FROM nginx:alpine AS final
WORKDIR /usr/share/nginx/html
# حذف محتوای پیشفرض nginx
RUN rm -rf ./*
# کپی خروجی Blazor WASM
COPY --from=build /app/wwwroot ./
# فقط بلوک server داخل default.conf
# کانفیگ Nginx
RUN printf 'server {\n\
listen 5107;\n\
server_name localhost;\n\
\n\
root /usr/share/nginx/html;\n\
index index.html;\n\
\n\
location / {\n\
try_files $uri $uri/ /index.html;\n\
}\n\
\n\
location /_framework/ {\n\
expires 1y;\n\
add_header Cache-Control "public, immutable";\n\
}\n\
\n\
location /_content/ {\n\
expires 1y;\n\
add_header Cache-Control "public, immutable";\n\
}\n\
\n\
location /assets/ {\n\
expires 7d;\n\
add_header Cache-Control "public";\n\
}\n\
\n\
location /css/ {\n\
expires 7d;\n\
add_header Cache-Control "public";\n\
}\n\
\n\
location /fonts/ {\n\
expires 7d;\n\
add_header Cache-Control "public";\n\
}\n\
\n\
location /img/ {\n\
expires 7d;\n\
add_header Cache-Control "public";\n\
}\n\
\n\
location /js/ {\n\
expires 7d;\n\
add_header Cache-Control "public";\n\
}\n\
location /css/ { expires 7d; add_header Cache-Control "public"; }\n\
location /fonts/ { expires 7d; add_header Cache-Control "public"; }\n\
location /img/ { expires 7d; add_header Cache-Control "public"; }\n\
location /js/ { expires 7d; add_header Cache-Control "public"; }\n\
\n\
location ~ \\.dll$ { add_header Content-Type application/octet-stream; }\n\
location ~ \\.wasm$ { add_header Content-Type application/wasm; }\n\