configs. Use a named volume and editable configuration files if the app or its owner must change the file.
Declare the file and mount it
This complete example runs Gatus with a status check and persistent SQLite history:zenith-compose.yml
/config/config.yaml from a read-only config mount. Its check history stays on the separate gatus_data volume. Only services that reference gatus-config receive the file.
Use inline content for the file contents. File-backed and external config sources are unsupported. See Compose configs for supported fields and defaults.
Standard Compose
configs is a top-level map next to services. Use x-zenith.configs for files users can edit in Zenith.Apply config changes
When Zenith applies an updated config definition, it restarts the services that consume the changed content. It does not update a running process’s mounted file in place. Pushing a Git commit does not automatically update an existing deployment.Preserve environment references
Zenith does not substitutex-zenith.env values into config content. If your app expands environment variables itself, write $$ to preserve a literal $ through Compose loading.
For runtime-generated content, keep the app’s startup code that creates the file. For writable configuration, use a named volume.