veza/config/docker
senke 113210734c chore(infra): J6 — mark 3 dormant docker-compose files as deprecated
Audit cross-checked against active composes shows three dormant compose
files that duplicate functionality already covered by the canonical
docker-compose.{,dev,prod,staging,test}.yml at the repo root. None are
referenced from Make targets, scripts, or CI workflows. They have
diverged from the active set (different ports, older Postgres version,
no shared volume names, etc.) and are a footgun for new contributors.

Files marked DEPRECATED with a header pointing at the canonical compose
to use instead:

  veza-stream-server/docker-compose.yml
    Standalone stream-server compose. Same service is provided by the
    root docker-compose.yml under the `docker-dev` profile.

  infra/docker-compose.lab.yml
    Lab Postgres on default port 5432. Conflicts with a host Postgres on
    most setups; root docker-compose.dev.yml uses non-default ports for
    a reason.

  config/docker/docker-compose.local.yml
    Local Postgres 15 variant on port 5433. Redundant with root
    docker-compose.dev.yml (Postgres 16, project-wide port mapping).

Not in this commit (intentionally limited J6 scope, per audit plan
"verify, don't refactor"):

  - No `extends:` consolidation across the active composes — that is a
    1-2 day refactor on its own and not a v1.0.4 concern.
  - The five active composes were syntactically validated locally
    (docker compose config); production and staging both require
    operator-injected env vars (DB_PASS, S3_*, RABBITMQ_PASS, etc.)
    which is the intended behavior, not a bug.
  - Cross-compose audit confirms zero references to the removed
    chat-server or any other dead service / image. Only one residual
    deprecation warning across all active composes: the obsolete
    `version:` field on docker-compose.{prod,test,test}.yml — cosmetic,
    not blocking.
  - Test suite verification (Go / Rust / Vitest) deferred to Forgejo CI
    rather than re-running locally. The pre-push hook + remote pipeline
    will gate the next push.

Follow-up candidates (not blocking v1.0.4):
  - Delete the three deprecated files once a 2-month grace period
    confirms no local dev workflow references them.
  - Drop the obsolete `version:` field across the active composes.

Refs: AUDIT_REPORT.md §6.1, §10 P7
2026-04-15 12:58:39 +02:00
..
docker-compose.local.yml chore(infra): J6 — mark 3 dormant docker-compose files as deprecated 2026-04-15 12:58:39 +02:00
README.md chore(cleanup): remove veza-chat-server directory and all operational references 2026-02-22 21:13:00 +01:00

Docker Compose Files — Usage Guide

This project uses multiple docker-compose files for different environments. After the cleanup in the audit remediation, the following files remain and are canonical:

Root-level files

File Purpose Usage
docker-compose.yml Local development docker compose up
docker-compose.prod.yml Production (canonical) docker compose -f docker-compose.prod.yml up -d
docker-compose.staging.yml Staging environment docker compose -f docker-compose.staging.yml up -d
docker-compose.test.yml Integration tests docker compose -f docker-compose.test.yml up -d

Service-specific files

File Purpose Usage
veza-stream-server/docker-compose.yml Standalone stream server dev cd veza-stream-server && docker compose up

Infrastructure monitoring

File Purpose Usage
config/docker/docker-compose.local.yml Local monitoring (Prometheus, Grafana) docker compose -f config/docker/docker-compose.local.yml up -d

Deleted files (audit remediation C9)

The following deprecated/duplicate files were removed:

  • docker-compose.production.yml (root) — superseded by docker-compose.prod.yml
  • config/docker/docker-compose.production.yml — deprecated copy
  • veza-stream-server/docker-compose.production.yml — deprecated copy

Production deployment notes

docker-compose.prod.yml requires the following environment variables to be set (it will fail if any are missing):

  • DB_PASS — PostgreSQL password
  • JWT_SECRET — JWT signing secret (minimum 32 characters)
  • RABBITMQ_PASS — RabbitMQ password

All database connections use sslmode=require.