Installing Postulo: a plugin baked in with the build argument is lost by either documented upgrade #584
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#584
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-09-29 in a read-only review of postulo at
95348908dand postulo.wiki at de1f52467, following the wiki's install and upgrade recipes againstdocker/compose.ymlanddocker/Dockerfile.Checked again on 2026-10-01 against
mainat0a5cad587: still present. The wiki has moved to9aefad9b6; the two pages named here are unchanged.The wiki offers baking a plugin into the image with
POSTULO_EXTRA_PACKAGESand says the plugin "survives upgrades because it is part of the image you build". Both upgrade recipes on the same page throw it away: one rebuilds without the build argument, the other pulls the published image over the locally built one. A plugin installed this way is not in the volume's plugin record, so the entrypoint'splugins syncdoes not bring it back.Installing-Postulo.md:118-125(the build argument on the command line) and:147-149(the promise);Installing-Postulo.md:309-313(Upgrading → With Docker:build --pullwith onlyPOSTULO_APT_REFRESH);Installing-Postulo.md:346-355(Releases and upgrading:docker compose … pull, andup -d --build); wikiWriting-a-plugin.md:1521-1525repeats the build-argument recipe;docker/compose.yml:23-29gives thepostuloservice bothbuild:andimage: source.tiagoagueda.com/postulo/postulo:0.2;docker/Dockerfile:119-128installs the packages only when the argument is set;docker/entrypoint.sh:18-20restores only what the record lists.docker compose -f docker/compose.yml build --build-arg POSTULO_EXTRA_PACKAGES="git+…/postulo-apprise.git". The result is taggedsource.tiagoagueda.com/postulo/postulo:0.2, the name inimage:.build --pullpasses noPOSTULO_EXTRA_PACKAGES, so the new image has no apprise package. Or they upgrade as Releases and upgrading says:docker compose pullfetches the published:0.2and replaces the local tag of the same name.plugins syncfinds nothing to restore (the build-time install was never recorded), and the scheduler's notification pass logs "Connection … uses 'apprise', which is not installed" (notifications/service.py:63-67) and skips the connection. Notifications stop; the reason is only in the log.The compose-file variant (
build.args) survives a rebuild, but it is a local edit to a tracked file that the recipe's owngit pullmay refuse to merge over, and it does not survivedocker compose pulleither.docker/compose.override.ymlor similar, untracked) that keepsPOSTULO_EXTRA_PACKAGESinbuild.argsand gives the image a local name (for exampleimage: postulo-local:0.2), sodocker compose pullnever replaces it; drop the command-line form or say it must be repeated at every rebuild. In both upgrade sections, say that an instance with a baked image upgrades by rebuilding with its override (build --pullwith the same arguments) and never bypull. Change "it survives upgrades" to say under which recipe it does. Make the same correction inWriting-a-plugin.md.Done when
Installing-Postulo.mdandWriting-a-plugin.mdgive one baked-plugin recipe whose image keeps its plugins through the upgrade steps the same page gives, and both upgrade sections name the exception.Corrected in the wiki (postulo.wiki ee6e8bd).