Docker Compose Stacks are now live on Miget. Point the platform at a Git repository with a docker-compose.yml, and Miget deploys the entire stack as one coordinated unit: your build-backed apps, standalone images, and managed databases and caches, all provisioned and wired together.
What shipped
A Stack turns a compose file into a running, multi-service application on Miget. From a single file, Miget:
- Detects every service in the compose file.
- Treats services with a
build:as apps,image:-only services as standalone apps, and services tagged as managed (for examplepostgresorvalkey) as managed Miget databases and caches. - Provisions the managed services and injects their connection variables into the apps that need them.
- Tracks a branch, so every deploy re-reads the compose file and reconciles the changes: new services are added, changed services are updated, and removed services are cleaned up.
The whole stack runs inside one Resource, so you are not billed per service. A web app, a background worker, and a Postgres database deploy together for the price of the compute they use.
Why it matters
Most PaaS platforms deploy one service at a time. A real application is rarely one service - it is an API, a worker, a database, and a cache that have to be created, connected, and kept in sync. Doing that by hand across separate deploys is tedious and easy to get wrong.
Compose is already the format developers use to describe multi-service apps locally. Stacks let you deploy that same file to production without rewriting it into a platform-specific format.
How to use it
From the dashboard
The stack wizard has three steps:
- Source - pick a GitHub or public Git repository, the branch to track, and the path to the compose file.
- Review - Miget analyzes the compose file and shows the detected services. Any required environment variables are surfaced here for you to fill in.
- Details - name the stack, choose a project, and select a Resource. Miget checks capacity before anything is created.
From the API
Analyze a repository first, then create the stack:
# 1. Detect services and required env vars (creates nothing)
curl -X POST https://app.miget.com/api/v1/stacks/analyze \
-H "Authorization: Bearer $MIGET_API_TOKEN" \
-d '{"repository_url": "https://github.com/acme/shop", "branch": "main"}'
# 2. Create the stack
curl -X POST https://app.miget.com/api/v1/stacks \
-H "Authorization: Bearer $MIGET_API_TOKEN" \
-d '{ "label": "Shop", "repository_url": "https://github.com/acme/shop", "branch": "main", "project_id": "...", "resource_id": "..." }'
Every push to the tracked branch can redeploy the stack automatically.
Technical details
Detection runs against your compose file and derives resources, environment variables, volumes, and health checks for each service. Managed databases are provisioned as first-class Miget services with their own credentials, not raw containers, so they get the same backups, HA options, and connection management as any other Miget database. Because each service still runs in its own microVM, a stack is a group of isolated services, not one shared container.
What is next
We also just launched deployable.sh, a catalogue of 138 ready-to-deploy Compose stacks - databases, message queues, auth servers, AI tooling, and full backends like Supabase and PocketBase. Point Miget at any of them and deploy in a few clicks.
Get started
- Create a stack from the dashboard on app.miget.com.
- Read the Docker Compose Stacks documentation for the full reference.
- Browse ready-made stacks at deployable.sh.
What to read next
- Deploy 138 Self-Hostable Stacks on Miget with deployable.sh - The catalogue of ready-to-deploy Compose stacks
- How to Deploy a Python Celery Worker on Miget - Run a web app and a worker in one Resource
- Observability Is Live: Metrics, Logs, and Grafana Dashboards - Monitor every service in your stack