Un tiers veut installer le projet sur un Synology, où rien du paquet `_ynh` n'existe. L'application n'étant qu'un processus et un fichier SQLite, un `Dockerfile` suffit — mais l'essentiel n'est pas là. Sans portail SSO, il n'y a pas d'identité, et l'application ne s'en invente pas : les données personnelles se ferment, les communes non. Mesuré plutôt que supposé, et écrit comme tel : les deux replis (utilisateur simulé, en-tête injecté) n'authentifient personne, et le port ne doit être publié que sur la boucle locale. Le déploiement de référence reste `mabibli_ynh`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
38 lines
2.0 KiB
Docker
38 lines
2.0 KiB
Docker
# Image pour héberger MaBibli AILLEURS que sur YunoHost (Synology, NAS, VPS…).
|
|
#
|
|
# ⚠️ Ce n'est PAS le chemin de déploiement de référence : celui-ci reste le paquet
|
|
# `mabibli_ynh`, qui déploie un publish self-contained sans conteneur (voir README,
|
|
# « Mettre en production »). Cette image existe pour les hébergements qui n'ont pas de
|
|
# portail SSO — et elle n'apporte donc AUCUNE authentification. Lire impérativement
|
|
# « Installer ailleurs que sur YunoHost » dans le README avant de l'exposer.
|
|
|
|
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
|
WORKDIR /src
|
|
|
|
# `MaBibli.Api` référence `MaBibli.Client` : le client Blazor WebAssembly est compilé au
|
|
# passage et atterrit dans `wwwroot/`. Un seul projet à publier suffit pour les trois.
|
|
# Aucun `dotnet workload install` n'est nécessaire : le SDK .NET 10 résout l'outillage
|
|
# WebAssembly tout seul (vérifié — aucune charge de travail n'est installée en local).
|
|
COPY . .
|
|
RUN dotnet publish MaBibli.Api --configuration Release --output /app
|
|
|
|
# Pas de `--self-contained` ici, contrairement au paquet YunoHost : l'image `aspnet`
|
|
# embarque déjà le runtime. Le self-contained sert à ne rien exiger d'un serveur qu'on
|
|
# ne maîtrise pas ; dans un conteneur, la question ne se pose pas.
|
|
FROM mcr.microsoft.com/dotnet/aspnet:10.0
|
|
WORKDIR /app
|
|
COPY --from=build /app .
|
|
|
|
# La base vit dans un volume, jamais à côté des binaires : c'est ce qui la fait survivre
|
|
# au remplacement de l'image. Même règle que le `data_dir` de YunoHost.
|
|
ENV ConnectionStrings__MaBibli="Data Source=/data/mabibli.db"
|
|
VOLUME ["/data"]
|
|
|
|
# L'image `aspnet` écoute déjà sur 8080 : poser `ASPNETCORE_URLS` ne ferait qu'écraser ce
|
|
# réglage et journaliser un avertissement à chaque démarrage. Pour changer de port,
|
|
# `ASPNETCORE_HTTP_PORTS`. ⚠️ Écouter sur toutes les interfaces est sûr DANS un conteneur —
|
|
# c'est la publication du port qui décide de l'exposition, voir `compose.yaml`.
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["dotnet", "MaBibli.Api.dll"]
|