dew/docs/features/infra.md

1.8 KiB

Infrastructure

dew infra manages project-local infrastructure services declared under .project/infrastructure.

The initial runtime backend is Podman Quadlets installed into systemd search paths. The command surface is runtime-oriented rather than Podman-specific so future backends can be added without changing project manifests or common CLI workflows.

Layout

.project/infrastructure/
└── services/
    └── postgres/
        ├── metadata.toml
        ├── app_postgres.container
        ├── app_postgres.container.d/
        ├── app_postgres.profiles.d/
        ├── configure.schema.json
        ├── init.schema.json
        └── config/

Manifest

[service]
id = "postgres"
name = "PostgreSQL"
unit = "app_postgres.service"
container_name = "app_postgres"

[runtime]
type = "podman-quadlet"

[container]
file = "app_postgres.container"
dropins_dir = "app_postgres.container.d"
profiles_dir = "app_postgres.profiles.d"

[schemas]
configure = "configure.schema.json"
init = "init.schema.json"

Commands

dew infra list
dew infra show postgres
dew infra validate --all
dew infra configure postgres schema
dew infra configure postgres show
dew infra configure postgres apply --file config.json --set port=5432
dew infra init postgres schema
dew infra init postgres run --file init.json
dew infra install postgres
dew infra up postgres
dew infra status postgres
dew infra logs postgres --lines 200
dew infra down postgres
dew infra delete postgres --container

Use --dry-run on mutating commands to print filesystem, systemctl, journalctl, and podman actions without applying them. Use --scope user for the default user systemd path or --scope system for /etc/containers/systemd.

dew infra up installs missing Quadlet files, reloads systemd, then starts the unit.