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:
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.
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
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 <[email protected]>
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
FED-M1-02 —
docker-compose.federated.ymloverlay 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:pg17on host port${PG_FEDERATED_HOST_PORT:-5433}, named volumepg_federated_data, healthcheck identical to base, mounts./infra/pg-initso the vector extension is created automatically.valkey-federated—valkey/valkey:8-alpineon host port${VALKEY_FEDERATED_HOST_PORT:-6380}, named volumevalkey_federated_data, healthcheck identical to base.Both services have
profiles: [federated]so they never start on a plaindocker compose up. Activation:Mutually exclusive with the base dev stack on host ports 5433/6380 — the file's header comment documents this. The base
docker-compose.ymlis 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 configexits 0 with both services listed.docker compose -f docker-compose.federated.yml config --services(no profile flag) returns empty — confirms profile gating works.docker-compose.yml(verified viagit diff --name-only HEAD).Refs #460
Test plan
docker compose -f docker-compose.federated.yml --profile federated configexits 0--profile federated)Generated with Claude Code
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 <[email protected]>