Tutorials
Deploy a Docker Compose Stack
Walk through deploying a multi-container Docker Compose app on Vardo — from project creation to a live domain.
You'll take an existing docker-compose.yml in a GitHub repo and deploy it to Vardo as a running stack with a custom domain.
Prerequisites
- A running Vardo instance (installation guide)
- GitHub connected to Vardo (setup instructions)
- A GitHub repo containing a
docker-compose.ymlat the root (or a subdirectory — you'll specify the path)
1. Create a project
- Go to Projects in the sidebar
- Click New Project
- Name it something descriptive — e.g.,
plausibleormy-saas - Click Create
2. Create a Compose app
- Inside your project, click New App
- Choose GitHub as the source
- Search for and select your repository
- Pick the branch to deploy from (usually
main) - Set the deploy type to Compose
- If your compose file isn't at the repo root, set the Compose path — e.g.,
./infra/docker-compose.yml - Click Create App
3. Set environment variables
Most compose stacks need env vars — database passwords, API keys, config values.
- Open the app detail page
- Click the Environment tab
- Add your variables:
POSTGRES_PASSWORD=supersecret APP_SECRET=change-me DOMAIN=myapp.example.com - Click Save
These get injected into every container in the stack at runtime. They're encrypted at rest.
4. Deploy
- Click Deploy on the app detail page
- Watch the build log — Vardo clones the repo, runs
docker compose up, and starts the containers - When the status flips to Running, you're live
If you enabled Auto deploy when creating the app, every push to the configured branch triggers a redeploy automatically.
5. Access your app and add a domain
Vardo assigns a subdomain automatically (e.g., myapp.example.com under your base domain). To use a custom domain:
- Go to the app's Domains tab
- Click Add Domain
- Enter your domain — e.g.,
app.mycompany.com - Add a DNS record at your registrar:
Or use an A record pointing directly to your server's IP.CNAME app.mycompany.com → vardo.example.com - Click Verify — Vardo checks DNS and provisions a Let's Encrypt certificate automatically
- Once verified, the domain is live with HTTPS
That's it
Your compose stack is running, auto-deploys on push, and has a TLS-secured custom domain. From here you can:
- Check container logs in the Logs tab
- Monitor resource usage under Metrics
- Add more apps to the same project — databases, caches, sidecars