Move shared infrastructure to a separate Infrastructure repo

Postgres, Zitadel, SeaweedFS, RabbitMQ and Jaeger no longer run as part
of this stack. They're shared services (used by Musify, Ping and
docker-manager) that now live in a separate Infrastructure repository
and must already be running.

deploy/compose.yml keeps only what's specific to Musify: its own
database connection, its own OIDC app and storage bucket (created
against the shared Zitadel/SeaweedFS via zitadel-init/seaweedfs-init),
and the application containers. A new wait-for-postgres one-shot
replaces the in-file Postgres health check, which no longer works now
that Postgres lives in a different compose project.

compose.prod.yml joins Infrastructure's infra-net network instead of
running its own copies. Docs and READMEs updated to match.
This commit is contained in:
2026-09-21 22:09:08 +02:00
parent c5748e9765
commit 63018a7c72
11 changed files with 261 additions and 369 deletions
+17 -14
View File
@@ -5,15 +5,19 @@ and prod) live in [deploy/README.md](../deploy/README.md).
## Startup
Bring up the separate `Infrastructure` repository first (Postgres, Zitadel,
SeaweedFS, RabbitMQ, Jaeger, see its own README for the exact command), then:
```sh
docker compose -f deploy/compose.yml -f deploy/compose.dev.yml up -d
```
That one command brings up the infrastructure and runs the one-shot bootstrap
jobs: generates the RS256 stream-ticket keys in `deploy/keys/`, applies the
EF Core migrations, and provisions Zitadel (project + OIDC apps), writing the
client ids into `deploy/.env`. Full details, including how to run the apps in
Docker with `--profile apps`, are in [deploy/README.md](../deploy/README.md).
That runs Musify's own one-shot bootstrap jobs: it generates the RS256
stream-ticket keys in `deploy/keys/`, applies the EF Core migrations, creates
Musify's storage bucket, and provisions Zitadel (project + OIDC apps),
writing the client ids into `deploy/.env`. Full details, including how to run
the apps in Docker with `--profile apps`, are in
[deploy/README.md](../deploy/README.md).
## Applications
@@ -31,16 +35,15 @@ npm --prefix web-player run dev # :5173
| Musify.Api | 5111 (`/scalar/v1`, `/openapi/v1.json`) |
| Musify.StreamingGateway | 8081 (`/health`, `/media/...`) |
| web-player | 5173 (`npm run dev`) or 3000 (container) |
| SeaweedFS S3 / filer / master | 8333 / 8888 / 9333 |
| Zitadel | 8080 |
| PostgreSQL | 59000 (→ 5432 in the container) |
| RabbitMQ AMQP / management | 5672 / 15672 |
| Jaeger UI / OTLP | 16686 / 4317 |
| pgAdmin (`-Tools`) | 5050 |
DB: `musify_db`, user `postgres`/`postgres`. S3 bucket: `webapi-storage`
(credentials `admin_access_key`/`admin_secret_key`). All of these come from
`deploy/.env`.
Postgres, Zitadel, SeaweedFS, RabbitMQ and Jaeger are not run by this repo.
Their ports are documented in the separate `Infrastructure` repository's own
README.
DB: `musify_db`, user `postgres`/`postgres` on Infrastructure's shared
Postgres. S3 bucket: `webapi-storage` (credentials
`admin_access_key`/`admin_secret_key`, also Infrastructure's). All of these
come from `deploy/.env`.
## Migrations