zenith-compose.yml packages a Docker Compose app for Zenith. It keeps the Compose services, networks, and volumes intact, then adds one top-level x-zenith block for listing and deployment settings.
Every service needs a public container image. If you do not have one yet, containerise your app first.
This page covers the fields most apps need. Use the complete
zenith-compose.yml reference for every field, default, validation rule, and runtime behavior.Create the file
Addzenith-compose.yml to the root of a public GitHub repository. Start from the Compose file you already use to run the app.
This example packages PrivateBin with one public service and one persistent volume:
zenith-compose.yml
x-zenith block needs catalog.name and one expose entry. The rest depends on the app.
Configure the listing
catalog describes the app in the Zenith marketplace.
The developer dashboard collects listing copy and artwork during submission. Zenith writes the uploaded artwork URLs into the catalogue copy of the file.
Expose a service
expose maps a Compose service port to a public Zenith hostname.
Add deployment variables
env declares values Zenith resolves for each deployment. The map key becomes the literal container environment variable name.
Use the public URL
A bare string aliases another declared value or a Zenith built-in:Generate a stable secret
Usegenerate with an RE2 pattern. Zenith creates the value once and keeps it for the life of the deployment.
Build a value from other variables
Usetemplate to substitute {NAME} references on every render:
services to inject a value into selected Compose services. Without it, Zenith injects the value into every service.
x-zenith.env value replaces a Compose environment entry with the same name in the services it targets.
Add persistent storage
storage describes a Compose named volume and its initial size.
Check the file locally
Ask Docker Compose to parse the file:x-zenith-specific validation during submission.
Continue when Compose parses the file without errors, every service stays running, and each exposed service answers on its declared port.
Compose restrictions
Commit the file
Commitzenith-compose.yml at the repository root on the default branch. The file must be non-empty and no larger than 128 KiB.
Next: submit your app
Connect the repository to Zenith and send it for review.
Complete reference
Check every supported field, default, validation rule, and runtime behavior.