The django deploy sets COMPOSE_PROFILES on the start step but not on the build step, so docker compose build skips profile-gated services. up -d then reuses whatever image already exists and the container silently keeps running old code.
This adds COMPOSE_PROFILES to the build step so it matches the start step. Only affects hosts that set host_apps.compose_profiles (today: the monica_site dj-queue worker on adama).
Symptom this fixes
On adama the beta worker image was 20 hours stale while web was current:
Image
Built
Postgres driver
monica_site_beta-web
today
psycopg 3.3.4
monica_site_beta-worker
Aug 8
psycopg2 2.9.12
So the worker crash-looped on LISTEN/NOTIFY (TypeError: 'list' object is not callable in dj_queue/runtime/notify.py) long after monica_site had moved to psycopg3, because its image was never rebuilt.
Branch is merged up with master, which already carries the worker auto-start from #18; the diff here is just the build step.
Test plan
Manual COMPOSE_PROFILES=worker docker compose build worker on adama produced an image with psycopg 3.3.4 and the notify errors stopped.
Beta deploy from this branch recreates the worker with a fresh image, no manual rebuild.
Hosts without compose_profiles (roslin, ai-server-4080) still build/start web only.
## Summary
The django deploy sets `COMPOSE_PROFILES` on the **start** step but not on the **build** step, so `docker compose build` skips profile-gated services. `up -d` then reuses whatever image already exists and the container silently keeps running old code.
This adds `COMPOSE_PROFILES` to the build step so it matches the start step. Only affects hosts that set `host_apps.compose_profiles` (today: the `monica_site` dj-queue worker on adama).
## Symptom this fixes
On adama the beta worker image was 20 hours stale while web was current:
| Image | Built | Postgres driver |
|---|---|---|
| `monica_site_beta-web` | today | psycopg 3.3.4 |
| `monica_site_beta-worker` | Aug 8 | psycopg2 2.9.12 |
So the worker crash-looped on LISTEN/NOTIFY (`TypeError: 'list' object is not callable` in `dj_queue/runtime/notify.py`) long after `monica_site` had moved to psycopg3, because its image was never rebuilt.
Branch is merged up with `master`, which already carries the worker auto-start from [#18](https://git.aimloperations.com/ai_ml_operations/server-infra/pulls/18); the diff here is just the build step.
## Test plan
- [x] Manual `COMPOSE_PROFILES=worker docker compose build worker` on adama produced an image with psycopg 3.3.4 and the notify errors stopped.
- [ ] Beta deploy from this branch recreates the worker with a fresh image, no manual rebuild.
- [ ] Hosts without `compose_profiles` (roslin, ai-server-4080) still build/start web only.
The build step omitted COMPOSE_PROFILES, so docker compose skipped the
dj-queue worker and up -d reused an image from an earlier deploy; the
monica_site beta worker kept psycopg2 and crash-looped on LISTEN/NOTIFY.
westfarn
changed title from Auto-start and rebuild the monica_site dj-queue worker (closes #17) to Build profile-gated services so workers do not run stale images2026-08-09 04:24:31 -07:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
The django deploy sets
COMPOSE_PROFILESon the start step but not on the build step, sodocker compose buildskips profile-gated services.up -dthen reuses whatever image already exists and the container silently keeps running old code.This adds
COMPOSE_PROFILESto the build step so it matches the start step. Only affects hosts that sethost_apps.compose_profiles(today: themonica_sitedj-queue worker on adama).Symptom this fixes
On adama the beta worker image was 20 hours stale while web was current:
monica_site_beta-webmonica_site_beta-workerSo the worker crash-looped on LISTEN/NOTIFY (
TypeError: 'list' object is not callableindj_queue/runtime/notify.py) long aftermonica_sitehad moved to psycopg3, because its image was never rebuilt.Branch is merged up with
master, which already carries the worker auto-start from #18; the diff here is just the build step.Test plan
COMPOSE_PROFILES=worker docker compose build workeron adama produced an image with psycopg 3.3.4 and the notify errors stopped.compose_profiles(roslin, ai-server-4080) still build/start web only.Auto-start and rebuild the monica_site dj-queue worker (closes #17)to Build profile-gated services so workers do not run stale images