Full rewrite of the portfolio site from Next.js 14 to .NET 10: - ASP.NET Core 10 Razor Pages, no Node.js dependency - EF Core 10 + SQLite (same schema as before — data survives upgrade) - Cookie authentication (same single-password model) - Resend contact form via HttpClient - Bilingual FA/EN via locale cookie + BasePageModel - All UI ported to Razor Pages with Tailwind CDN + custom CSS - Vanilla JS: particles, typewriter, cursor, animations, portfolio modal - Dockerfile: SDK 10.0-alpine → aspnet 10.0-alpine (no npm/Node needed) - CI/CD: dropped NPM_TOKEN, ADMIN_SESSION_SECRET — pure dotnet publish Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+10
-12
@@ -6,30 +6,28 @@ services:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
NODE_IMAGE: ${NODE_IMAGE:-mirror.soroushasadi.com/node:20-alpine}
|
||||
NPM_TOKEN: ${NPM_TOKEN:-}
|
||||
DOTNET_IMAGE: ${DOTNET_IMAGE:-mcr.microsoft.com/dotnet/aspnet:10.0-alpine}
|
||||
SDK_IMAGE: ${SDK_IMAGE:-mcr.microsoft.com/dotnet/sdk:10.0-alpine}
|
||||
image: soroushasadi-site:latest
|
||||
container_name: soroushasadi-site
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
DATA_DIR: /data
|
||||
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD}
|
||||
ADMIN_SESSION_SECRET: ${ADMIN_SESSION_SECRET:?set ADMIN_SESSION_SECRET}
|
||||
RESEND_API_KEY: ${RESEND_API_KEY:-}
|
||||
CONTACT_INBOX: ${CONTACT_INBOX:-}
|
||||
CONTACT_FROM: ${CONTACT_FROM:-}
|
||||
ASPNETCORE_ENVIRONMENT: Production
|
||||
DataDir: /data
|
||||
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD}
|
||||
RESEND_API_KEY: ${RESEND_API_KEY:-}
|
||||
CONTACT_INBOX: ${CONTACT_INBOX:-}
|
||||
CONTACT_FROM: ${CONTACT_FROM:-}
|
||||
volumes:
|
||||
- cms-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "node", "-e",
|
||||
"fetch('http://127.0.0.1:3000/').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
||||
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:3000/ || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
start_period: 20s
|
||||
|
||||
volumes:
|
||||
cms-data:
|
||||
|
||||
Reference in New Issue
Block a user