From 4af01f1008e676f5da040a8712225fc866bbaede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Eduardo=20Garc=C3=ADa=20M=C3=A1rquez?= Date: Thu, 8 Jan 2026 11:30:24 -0500 Subject: [PATCH] fix(docker): update to .NET 10 SDK for k3s deployment - Update Dockerfile.api to use dotnet/sdk:10.0-alpine - Update runtime to aspnet:10.0-alpine - Add deploy-k3s.sh script for manual deployments --- deploy/docker/Dockerfile.api | 4 ++-- deploy/scripts/deploy-k3s.sh | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 deploy/scripts/deploy-k3s.sh diff --git a/deploy/docker/Dockerfile.api b/deploy/docker/Dockerfile.api index f6b739b..c55a0c5 100644 --- a/deploy/docker/Dockerfile.api +++ b/deploy/docker/Dockerfile.api @@ -1,5 +1,5 @@ # Backend API - Multi-stage optimized build -FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build +FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build WORKDIR /src # Copy csproj files first for layer caching @@ -17,7 +17,7 @@ COPY src/backend/ . RUN dotnet publish Host/Host.csproj -c Release -o /app --no-restore # Runtime image -FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS runtime WORKDIR /app COPY --from=build /app . diff --git a/deploy/scripts/deploy-k3s.sh b/deploy/scripts/deploy-k3s.sh new file mode 100644 index 0000000..6663b49 --- /dev/null +++ b/deploy/scripts/deploy-k3s.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Deploy script for k3s cluster +# Run this on the k3s master node after pulling latest code + +set -e + +NAMESPACE="student-enrollment" +PROJECT_DIR="/home/andres/student-enrollment" +TAG=$(git -C "$PROJECT_DIR" rev-parse --short HEAD) + +echo "=== Deploying commit $TAG to k3s ===" + +cd "$PROJECT_DIR" +git pull + +echo "=== Building API image ===" +sudo docker build -t student-api:$TAG -f deploy/docker/Dockerfile.api . + +echo "=== Building Frontend image ===" +sudo docker build -t student-frontend:$TAG -f deploy/docker/Dockerfile.frontend . + +echo "=== Importing images to k3s ===" +sudo docker save student-api:$TAG | sudo k3s ctr images import - +sudo docker save student-frontend:$TAG | sudo k3s ctr images import - + +echo "=== Updating deployments ===" +sudo kubectl -n $NAMESPACE set image deployment/student-api api=student-api:$TAG +sudo kubectl -n $NAMESPACE set image deployment/student-frontend frontend=student-frontend:$TAG + +echo "=== Waiting for rollout ===" +sudo kubectl -n $NAMESPACE rollout status deployment/student-api --timeout=120s +sudo kubectl -n $NAMESPACE rollout status deployment/student-frontend --timeout=60s + +echo "=== Health check ===" +sleep 5 +API_POD=$(sudo kubectl -n $NAMESPACE get pods -l app=student-api -o jsonpath='{.items[0].metadata.name}') +sudo kubectl -n $NAMESPACE exec $API_POD -- wget -q --spider http://localhost:5000/health + +echo "=== Deploy complete! Tag: $TAG ==="