Dokploy has native support for Docker Compose, letting you manage the full lifecycle of multi-container stacks — web servers, databases, workers, caches — using the sameDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Nettalco/dokploy/llms.txt
Use this file to discover all available pages before exploring further.
docker-compose.yml format you already know. Compose stacks can be sourced from a Git repository, pasted in as raw YAML, or bootstrapped from one of Dokploy’s built-in templates, and every service in the stack gets its own log stream and status indicator in the dashboard.
How It Works
When you deploy a Compose stack, Dokploy:- Clones the repository (or reads the inline YAML) to a working directory on the server.
- Optionally applies environment variable substitution from the stack’s Env configuration.
- Runs
docker compose up -d(ordocker stack deployin Swarm mode) to bring all services up. - Monitors each service individually and surfaces per-service logs and container status in the dashboard.
docker compose pull && docker compose up -d sequence, replacing containers with zero-downtime where the image and restart policy allow.
Creating a Compose Stack
Name the stack
Give it a Name and an optional description. Dokploy generates a unique
appName used internally for service naming.Choose a source
Select where the
docker-compose.yml comes from: a Git repository, raw YAML, or a template (see Compose Sources below).Configure the Compose path
If your
docker-compose.yml is not in the repo root, set the Compose Path (default: ./docker-compose.yml).Compose Sources
- Git Repository
- Raw YAML
- Template
Connect a GitHub, GitLab, Gitea, Bitbucket, or generic Git repository that contains a Set the branch and optionally the Compose path if the file is not at the repo root (e.g.
docker-compose.yml file. Dokploy clones the repo on every deploy and can automatically trigger a new deployment on every push via the Auto Deploy webhook../infra/docker-compose.yml).Enable the Watch Paths option to restrict deployments to only fire when specific paths in the repository change, reducing unnecessary rebuilds in monorepos.
Environment Variables
Open the Environment tab on a Compose stack to define variables that are substituted into the compose file at deploy time — equivalent to a.env file.
Service Management
After a Compose stack is deployed, Dokploy parses the running containers and surfaces each service individually. From the Services tab you can:- View the status (running, stopped, error) of each service.
- Open per-service logs to tail the output of a specific container.
- Fetch the current service list on demand via the Load Services action.
docker-compose (for single-node deployments) and stack (for Docker Swarm multi-node deployments).
Domains and Routing
You can attach Traefik domains to individual services within a Compose stack. This is the standard way to expose a specific compose service to the internet.Add a domain
Click Add Domain. Set the Host, Port, HTTPS toggle, and optionally the Service Name inside the compose file that should receive traffic.
The Service Name field must match the service name as it appears in your
docker-compose.yml (e.g. web, api). Dokploy prefixes it with the stack’s appName when constructing the Traefik rule.Randomize Ports
Port conflicts can occur when multiple Compose stacks define hard-coded host port mappings. The Randomize Compose feature rewrites all published port mappings to randomly assigned available host ports, preventing conflicts between stacks.Import Existing Compose
If you already have a running Docker Compose stack on the server and want to bring it under Dokploy management without downtime, use the Import workflow:- Create a new Compose service in Dokploy with the Raw YAML source.
- Paste in the compose file that matches the running stack.
- Dokploy attaches to the existing containers instead of replacing them.
Example: Web App + Database Stack
When using Traefik labels directly in your compose file (instead of Dokploy’s Domains tab), make sure the Traefik container has access to the Docker socket and the services share the same Docker network.