diff --git a/Docs/Referenties/Umbrel-appstore-spec.md b/Docs/Referenties/Umbrel-appstore-spec.md index 4676d7a..139b9a1 100644 --- a/Docs/Referenties/Umbrel-appstore-spec.md +++ b/Docs/Referenties/Umbrel-appstore-spec.md @@ -225,6 +225,21 @@ Alles daarbuiten wordt bij een update **niet** ververst. Een gewijzigde `entrypo `web/index.html` bereikt een bestaande installatie dus nooit; de gebruiker ziet zijn oude versie en er is geen foutmelding. Alleen een verwijdering en herinstallatie brengt het over. +### Wat `app-script` met de images doet, en waarom dat een lokale tag breekt + +Nagetrokken op 25-08-2026 in hetzelfde `app-script`, toen Evolu Relay een image kreeg die alleen lokaal +bestaat. Twee regels daaruit bepalen wat er met een image gebeurt: + +- **bij `install`, bij `update` en bij `post-patch-update` draait `compose "${app}" pull`.** Een tag die + niet in een register staat, laat de installatie dus falen vóórdat er iets gestart is. De uitweg is + `pull_policy: never` op die service: dan slaat compose hem over bij het ophalen en gebruikt wat er + lokaal staat. Dat is precies wat `whatsnext-evolu-relay` doet, en de reden staat er in commentaar bij; +- **starten gaat met `compose "${app}" up --detach --build`.** Dat `--build` is het vermelden waard, want + het betekent dat umbreld een `build:`-blok in een compose wél zou uitvoeren. Toch is bouwen-in-de-app + hier geen goed idee: een `Dockerfile` staat niet in de update-whitelist hierboven, dus een nieuwe versie + vraagt een deïnstallatie, en de installatie hangt tijdens het bouwen. Het recept hoort daarom in + `tools/` in de repo en het resultaat in de Docker-opslag of in een register. + **Gevolg voor het ontwerp.** Zet logica die je later nog wilt kunnen wijzigen op een van deze plekken: 1. **in `docker-compose.yml` zelf**, bijvoorbeeld als een inline `command:`-blok. De compose staat in de diff --git a/whatsnext-evolu-relay/docker-compose.yml b/whatsnext-evolu-relay/docker-compose.yml index f95a1b4..a75a4e3 100644 --- a/whatsnext-evolu-relay/docker-compose.yml +++ b/whatsnext-evolu-relay/docker-compose.yml @@ -34,6 +34,16 @@ services: # op zolang de image lokaal bestaat; zodra de tag naar een register wijst, # hoort de digest erbij. Zie Docs/Referenties/Images-pinnen.md. image: whatsnext/evolu-relay:c03a204 + # Verplicht zolang de tag niet in een register staat. umbreld draait bij een + # installatie en bij een update `docker compose pull` (zie `app-script` in + # umbreld), en dat zou deze tag op Docker Hub zoeken, waar hij niet bestaat. + # De installatie faalt dan voordat er iets gestart is. `never` slaat hem over + # bij het ophalen en gebruikt wat er lokaal staat. + # + # Bijkomend voordeel: staat de image er niet, dan is de fout "image niet + # gevonden" in plaats van een mislukte netwerkpoging, en dat wijst naar de + # bouwstap die overgeslagen is. Weg zodra er een register is. + pull_policy: never restart: on-failure depends_on: db: @@ -62,6 +72,8 @@ services: quota-manager: image: whatsnext/evolu-relay:c03a204 + # Zelfde reden als bij relay hierboven. + pull_policy: never restart: on-failure depends_on: db: