25 lines
1.5 KiB
Markdown
25 lines
1.5 KiB
Markdown
# infra
|
|
|
|
Copier template for the root of a project. With `layout: parts` it ships a `docker-compose.yml` that includes every part, a `Makefile` that drives compose and delegates `fmt`, `check` and `build` to parts, a `README.md` and an `.env.example` whose `COMPOSE_FILE` adds each part's `docker-compose.override.yml` and whose `COMPOSE_PROFILES` selects what runs on the machine. With `layout: single` a part template renders straight into the root and infra ships only `.gitignore`, `CLAUDE.md` and pre-commit hooks.
|
|
|
|
A part is a directory with:
|
|
|
|
- `docker-compose.yml` with root-relative paths and a profile per service, plus `docker-compose.override.yml.example` for what differs between machines
|
|
- `Makefile` with `fmt`, `check` and `build` targets
|
|
- `.env.example` appended to the root `.env` by `make env`
|
|
- `CLAUDE.md` with the part's checking commands
|
|
|
|
Application services carry the `services` profile, databases and other infrastructure carry `external`.
|
|
|
|
The root also gets a `renovate.jsonc` that is nothing but an `extends` on the
|
|
shared preset in `templates/renovate`. It does not subscribe the repo to
|
|
anything on its own: the bot walks an explicit list, so a new repo still has to
|
|
be added to `repositories` in `projects/personal/renovate/renovate-config.js`
|
|
of `infra/komodo`, and needs the `renovate`, `wait-3d` and `deps-code` labels
|
|
(`giteaproject <org>/<repo>` creates them).
|
|
|
|
```sh
|
|
copier copy --trust -d layout=parts -d 'parts=["backend","frontend"]' <this-repo> <dest>
|
|
copier update -a .copier/infra.yml
|
|
```
|