PostgreSQL compose file: no worker, and the documented worker command swaps the instance onto an empty SQLite #581
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#581
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
95348908d, comparing the two compose files and the instructions for background work.Checked again on 2026-10-01 against
mainat0a5cad587: still present. The wiki has moved to9aefad9b6, where theConfiguration.mdpassage is now at:407-415.docker/compose.ymlgained aworkerservice forPOSTULO_BACKGROUND_WORK(#247);docker/compose.postgres.ymldid not, which is the same drift #219 found for the scheduler. Both.env.exampleand the wiki tell every operator to start the worker withdocker compose -f docker/compose.yml --profile worker up -d, naming only the SQLite file. Both files declarename: postulo, a service calledpostuloand the volumepostulo-data, so on a PostgreSQL install that command replaces the running web container with one pointed at a new, empty SQLite database.docker/compose.postgres.yml:15-102(servicespostulo,scheduler,dbonly);docker/compose.yml:88-123(theworker);.env.example:125-126; the wiki'sConfiguration.md:405-413;Installing-Postulo.md:236("There is no background worker to run. Nothing in Postulo currently queues work.");tests/test_image_build.py:184, which checks only that the PostgreSQL file has a scheduler.POSTULO_BACKGROUND_WORK=trueas instructed. Their compose file has no worker, so every capture, logo, PDF and export queues work that nobody runs.postuloservice in the same project and recreates it withPOSTULO_DATABASE_URL: sqlite:////app/data/postulo.sqlite3. The entrypoint migrates a fresh SQLite file on the volume that holds the PostgreSQL instance's media, and thedbcontainer is left as an orphan.accounts/signals.py:47-61), in a container that shares the media volume and the.envsecrets.workerservice tocompose.postgres.ymlmatching the SQLite one (profileworker,POSTULO_SKIP_MIGRATEandPOSTULO_SKIP_PLUGIN_SYNC, the heartbeat healthcheck,depends_onbothdbandpostulohealthy). Replace the scheduler-only test with one that holds the two files' sets of Postulo services equal. Make.env.exampleand Configuration give both commands (or "the compose file you started with"), and replace the "no background worker" paragraph in Installing Postulo with how to runmanage.py workwithout Docker. Related to #219 (closed), which fixed the same gap for the scheduler.Done when
tests/test_image_build.pyloads both compose files and asserts that the services other thandbare the same set, and that eachworkerrunsmanage.py workwithPOSTULO_SKIP_MIGRATE: "1"; it fails today on the missingworker.