Service drivers
The driver set is closed. A declaration naming a driver outside it is refused
with unknown_service_driver, listing the drivers Onebox can run and directing
you to a daemon workload.
That is deliberate: inventing an image from a name produces a container that starts and stores nothing durable.
| Driver | Typical use | Connection parts |
|---|---|---|
postgres | Relational database | url host port user password database |
mysql | Relational database | url host port user password database |
mariadb | Relational database | url host port user password database |
mongodb | Document database | url host port user password database |
clickhouse | Analytical database | url host port user password database |
redis | Cache, queue | url host port user password |
valkey | Cache, queue | url host port user password |
rabbitmq | Message broker | url host port user password |
nats | Messaging, JetStream | url host port password |
minio | S3-compatible object storage | url host port user password |
meilisearch | Search | url host port password |
A part the driver does not have — a database on a cache — is omitted rather than
written empty. Every driver has a password part; redis and valkey have a
user part because Redis 6+ authenticates the built-in default user, and a URL
with an empty username fails AUTH outright.
What a declaration gets you
Section titled “What a declaration gets you”services: postgres: 17The image, a durable volume, a health check (every driver but nats), a
credential generated on the target, and the connection details your application
reads.
- The service outlives every release. Its own Compose project; no deploy and no rollback stops it or removes its volume.
- The credential is generated on the server, once. Not in your project, the generated runtime, or the digest. Never rotated by a re-apply.
- The version binds into the release digest, so a database upgrade under an untouched application cannot pass unnoticed.
Settings are driver-validated
Section titled “Settings are driver-validated”services: postgres: version: 17 settings: max_connections: 200A setting is applied through the mechanism its driver actually reads. One the
driver has no way to apply is refused with service_settings_unsupported, rather
than silently ignored.
Known limitations
Section titled “Known limitations”Anything else
Section titled “Anything else”Run it as a daemon workload and you own it: the image, the credential, the
volumes, the backup. See Add a database for the
comparison.