Produzione
L'API viene distribuita come immagine Docker multi-architettura, costruita a partire da src/Schuly.API/Dockerfile.
Immagine del container
- Il contesto di build è
./src. I percorsiCOPYdel Dockerfile sono relativi a quella directory, non alla radice del repository. - Fasi di build: build/publish con l'SDK su
mcr.microsoft.com/dotnet/sdk:10.0, runtime sumcr.microsoft.com/dotnet/aspnet:10.0. Il punto di ingresso èdotnet Schuly.API.dll. - Il file
application.propertiesnella radice del repository (cheDirectory.Build.propsnormalmente legge per la versione) non è incluso nel contesto di build, quindi l'immagine viene costruita con-p:Version=$VERSION. Il workflow di release passa il tag di release comeVERSION; questo mantiene la versione dell'assembly host allineata con ciò a cui si legano i plugin caricati a runtime. - L'immagine crea in anticipo
/app/pluginse/app/plugins-configper i plugin caricati a runtime e la loro configurazione per-plugin.
Versionamento + release
Unica fonte di verità: application.properties (<version>). src/Directory.Build.props la legge tramite XmlPeek.
Pubblicare una GitHub Release attiva docker-publish-release.yaml:
sync-version- confronta il tag di release (senza il prefissov) conapplication.properties. Se differiscono, apre un branchrelease-sync/<version>che aggiorna il file e fa l'auto-merge (squash) della PR sumain.build-and-push-multiarch- costruiscelinux/amd64+linux/arm64a partire da./srce pubblica i tag:ghcr.io/schulydev/schuly:<semver>più:<major>,:<major>.<minor>e:latest(latest solo per le release non preliminari).<DOCKERHUB_USERNAME>/schuly:<semver>(Docker Hub, best-effort - lo step di login ècontinue-on-error).
Migrazioni all'avvio
Il container applica automaticamente le migrazioni EF Core all'avvio (ApplyMigrations() in Program.cs → db.Database.Migrate()) e popola il catalogo dei sistemi scolastici. Non è richiesto alcuno step di migrazione separato durante il deploy; assicurati solo che il database sia raggiungibile tramite la stringa di connessione SchulyDatabase. Vedi Migrazioni e Configurazione.
