Images et releases
Utilise cette page pour voir comment les images Docker du serveur sont compilées et publiées. L'API est livrée sous forme d'image multi-architecture compilée à partir de src/Schuly.API/Dockerfile.
Image du conteneur
- Contexte de build :
./src. Les cheminsCOPYdu Dockerfile sont relatifs à ce contexte, pas à la racine du dépôt. - Étapes de build : le frontend se compile avec
oven/bun:1.3.5etnode:24-slim, et son résultat va danswwwroot. L'API se compile et se publie surmcr.microsoft.com/dotnet/sdk:10.0. - Runtime :
mcr.microsoft.com/dotnet/aspnet:10.0. Le point d'entrée estdotnet Schuly.API.dll. - Version :
Directory.Build.propslit normalement la version dans le fichierapplication.propertiesà la racine du dépôt, mais ce fichier n'est pas dans le contexte de build. L'image est compilée avec-p:Version=$VERSIONà la place, et le workflow de release transmet la version de la release. Cela garde la version d'assembly de l'hôte alignée sur celle à laquelle les plugins chargés à l'exécution se lient. - Dossiers de plugins : l'image crée
/app/pluginset/app/plugins-configpour les plugins chargés à l'exécution et leur configuration.
Versionnement et releases
application.properties (<version>) est la seule source de vérité. src/Directory.Build.props le lit.
La publication d'une release GitHub démarre docker-publish-release.yaml :
sync-version: compare le tag de release, sans sonv, àapplication.properties. S'ils diffèrent, il met à jour le fichier et fusionne en squash une pull requestrelease-sync/<version>dansmain.build-and-push-multiarch: compilelinux/amd64etlinux/arm64à partir de./srcet pousse versghcr.io/schulydev/schulyet<DOCKERHUB_USERNAME>/schuly. L'étape de connexion à Docker Hub est encontinue-on-error.build-and-push-sandbox: compile le sidecar sandbox pourlinux/amd64à partir desrc/Schuly.Sandbox/Dockerfileet le pousse versghcr.io/schulydev/schuly-sandbox.
Chaque image reçoit les tags <semver>, <major>.<minor> et <major>, plus latest pour les versions qui ne sont pas des préversions.
Migrations au démarrage
Le conteneur applique les migrations EF Core au démarrage (ApplyMigrations() dans Program.cs appelle db.Database.Migrate()) et initialise le catalogue des systèmes scolaires. Tu n'as pas besoin d'une étape de migration séparée quand tu déploies. Assure-toi que la chaîne de connexion SchulyDatabase peut atteindre la base de données. Voir Migrations et Configuration.
