# compose

Generated from the code · as of CLI 0.6.0

The compose files to use, in order.

- **Type:** list of strings
- **Required:** no
- **Default:** compose's own file lookup
- **Errors:** [`unsupported`](https://docs.omniarc.eu/errors/unsupported.md), [`overlay-parse`](https://docs.omniarc.eu/errors/overlay-parse.md)

Each file is passed to compose as `-f`, in the order you list them. Later files override earlier ones, which is how a laptop compose file is usually adapted for production, so the list is supported as written.

Paths are relative to the project directory and must stay inside it. Absolute paths, `~`, `..` out of the project, remote or `oci://` sources and paths containing a `$` variable are refused as unsupported: compose files must be bundled literally, so that what compose reads is exactly what you deployed. The same rule applies to the files your compose files pull in with `include` and `extends`.

Leave `compose` out and OmniArc looks for the first of `compose.yaml`, `compose.yml`, `docker-compose.yaml` and `docker-compose.yml`, the same order compose itself uses.

```yaml
compose: [docker-compose.yml, docker-compose.prod.yml]
```

**Example: arc.yaml**

```yaml
compose: [docker-compose.yml, docker-compose.prod.yml]
```
