feat(infra): docker-compose.federated.yml overlay (FED-M1-02) #471

Merged
jason.woltje merged 1 commits from feat/federation-m1-compose into main 2026-04-19 23:21:32 +00:00
Owner

Summary

FED-M1-02 — docker-compose.federated.yml overlay for the federated tier.

Defines two profile-gated services so the federated tier can be brought up locally for development and integration tests, distinct from the dev stack:

  • postgres-federatedpgvector/pgvector:pg17 on host port ${PG_FEDERATED_HOST_PORT:-5433}, named volume pg_federated_data, healthcheck identical to base, mounts ./infra/pg-init so the vector extension is created automatically.
  • valkey-federatedvalkey/valkey:8-alpine on host port ${VALKEY_FEDERATED_HOST_PORT:-6380}, named volume valkey_federated_data, healthcheck identical to base.

Both services have profiles: [federated] so they never start on a plain docker compose up. Activation:

docker compose -f docker-compose.federated.yml --profile federated up -d

Mutually exclusive with the base dev stack on host ports 5433/6380 — the file's header comment documents this. The base docker-compose.yml is untouched.

PG version is 17 (not 16 as the original task spec suggested) to match the base compose file. No reason to run a different major version for the same logical service.

Verification

  • docker compose -f docker-compose.federated.yml --profile federated config exits 0 with both services listed.
  • docker compose -f docker-compose.federated.yml config --services (no profile flag) returns empty — confirms profile gating works.
  • No edits to docker-compose.yml (verified via git diff --name-only HEAD).
  • Independent verification subagent confirmed all 9 spec items.

Refs #460

Test plan

  • docker compose -f docker-compose.federated.yml --profile federated config exits 0
  • Profile gating active (no services without --profile federated)
  • Base file untouched
  • CI green on merge

Generated with Claude Code

## Summary FED-M1-02 — `docker-compose.federated.yml` overlay for the federated tier. Defines two profile-gated services so the federated tier can be brought up locally for development and integration tests, distinct from the dev stack: - `postgres-federated` — `pgvector/pgvector:pg17` on host port `${PG_FEDERATED_HOST_PORT:-5433}`, named volume `pg_federated_data`, healthcheck identical to base, mounts `./infra/pg-init` so the vector extension is created automatically. - `valkey-federated` — `valkey/valkey:8-alpine` on host port `${VALKEY_FEDERATED_HOST_PORT:-6380}`, named volume `valkey_federated_data`, healthcheck identical to base. Both services have `profiles: [federated]` so they never start on a plain `docker compose up`. Activation: ```bash docker compose -f docker-compose.federated.yml --profile federated up -d ``` Mutually exclusive with the base dev stack on host ports 5433/6380 — the file's header comment documents this. The base `docker-compose.yml` is untouched. PG version is **17** (not 16 as the original task spec suggested) to match the base compose file. No reason to run a different major version for the same logical service. ## Verification - `docker compose -f docker-compose.federated.yml --profile federated config` exits 0 with both services listed. - `docker compose -f docker-compose.federated.yml config --services` (no profile flag) returns empty — confirms profile gating works. - No edits to `docker-compose.yml` (verified via `git diff --name-only HEAD`). - Independent verification subagent confirmed all 9 spec items. **Refs** #460 ## Test plan - [x] `docker compose -f docker-compose.federated.yml --profile federated config` exits 0 - [x] Profile gating active (no services without `--profile federated`) - [x] Base file untouched - [ ] CI green on merge Generated with Claude Code
jason.woltje added 1 commit 2026-04-19 23:15:18 +00:00
feat(infra): docker-compose.federated.yml overlay for federated tier (FED-M1-02)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
8895b0df83
Adds a profile-gated compose overlay defining `postgres-federated`
(pgvector/pgvector:pg17, port 5433) and `valkey-federated`
(valkey/valkey:8-alpine, port 6380) with named volumes
(`pg_federated_data`, `valkey_federated_data`), healthchecks identical
to the base stack, and the existing `infra/pg-init` mount so the vector
extension is created automatically on first boot.

Both services are gated by `profiles: [federated]` so they never start
on a plain `docker compose up`. Usage:

    docker compose -f docker-compose.federated.yml --profile federated up -d

The overlay is mutually exclusive with the base dev stack on host ports
5433/6380 (header comment documents this). Base file untouched.

Refs #460

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jason.woltje merged commit 51402bdb6d into main 2026-04-19 23:21:32 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#471