Files
onyx/cli/internal/deploy
Nikolas Garza ec1ed831c0 fix(deployment): keep MinIO and its copy service stopped on a fresh Compose install (#16429)
## Description

A fresh hand-run Compose install no longer starts MinIO or
`object-store-copy`. Fixes
[ENG-4429](https://linear.app/onyx-app/issue/ENG-4429/a-fresh-manual-compose-install-still-starts-minio).

**Why**
- With the v5 compose file and `env.template` defaults, MinIO started on
a fresh install. Only onyx-cli set `MINIO_REPLICAS=0`.
- Even with it set, `object-store-copy` started and idled forever.

**What**
- `env.template` sets `MINIO_REPLICAS=0`, since a fresh install never
held files in MinIO.
- `object-store-copy` follows `MINIO_REPLICAS` like `minio` does.
- The compose default stays `1`, so an earlier release's `.env`, which
lacks the variable, keeps MinIO and the copy running.
- `env.prod.template` names the object store, the S3 key pair and
`MINIO_REPLICAS=0`. A fresh prod `.env` defaulted the app to MinIO
before.
- The retire step stops MinIO with `docker compose up -d --no-deps minio
object-store-copy`, since a plain `up -d` recreates every service that
loads `.env`.
- Not changed: Compose still creates the empty `minio_data` volume for a
zero-replica service. Only a profile split across the CLI, ods, CI and
installers would avoid it.

Docs: https://github.com/onyx-dot-app/documentation/pull/521

## How Has This Been Tested?

Live on scratch Compose projects with the v5.0.0-beta.2 images. A `.env`
copied from the new `env.template` ran only `object-store` and
`relational_db`, with no `minio` or `object-store-copy` container. An
upgraded `.env` without `MINIO_REPLICAS` ran `minio` and
`object-store-copy`, and the copy started. `docker compose config` shows
replicas 0 and 1 for the two cases. With `docker-compose.prod.yml` and a
fresh `env.prod.template` plus keys, `api_server` points at
`object-store` and `minio` and `object-store-copy` are at 0, and empty
keys still refuse to start. `go test ./...` in `cli` passes. In
`tools/ods`, `TestDevcontainerCommands` and `TestRunDevRebuild` fail
locally because `SSH_AUTH_SOCK` adds a mount, which is unrelated.

## Additional Options

- [ ] [Optional] Please cherry-pick this PR to the latest release
version.
2026-10-21 22:34:45 +00:00
..