Dokploy lets you deploy virtually any application — from Node.js APIs to Python services to static sites — directly from a Git repository or a pre-built Docker image. Once connected, Dokploy handles building, containerising, and routing your app through Traefik, with environment variable management, auto-deploy webhooks, preview environments, and one-click rollbacks all built in.Documentation 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.
Supported Build Types
Dokploy supports six build strategies. Choose the one that matches how your project is structured.- Nixpacks
- Dockerfile
- Static
- Heroku Buildpacks / Paketo Buildpacks / Railpack
Nixpacks (the default) automatically detects your language and framework, then compiles a build plan without requiring any configuration file. It works with Node.js, Python, Go, Ruby, PHP, Rust, Java, and many other runtimes — the same engine used by Railway.
Nixpacks reads your
package.json, requirements.txt, go.mod, Gemfile, etc. to detect the correct build plan. You can override the detected install, build, and start commands from the application’s Build tab.Creating an Application
Create or open a project
Navigate to the Dokploy dashboard and open an existing project, or create a new one. Projects act as logical groupings for related services.
Choose a source
Select your source type:
- GitHub / GitLab / Gitea / Bitbucket — connect a Git provider integration and pick your repository and branch.
- Git — enter a raw Git clone URL and optional SSH key.
- Docker — enter an image reference and optional registry credentials.
- Drop — drag-and-drop a ZIP archive directly into the dashboard for a one-off deployment.
Configure build settings
Choose a Build Type (Nixpacks, Dockerfile, etc.) and fill in any overrides for install command, build command, start command, and root directory.
Set environment variables
Open the Environment tab and add any key-value pairs your application needs. Variables are injected at runtime.
Build Configuration
The Build tab exposes the following settings:| Setting | Description |
|---|---|
| Build Type | nixpacks, dockerfile, heroku_buildpacks, paketo_buildpacks, static, or railpack |
| Dockerfile path | Relative path to the Dockerfile (default: Dockerfile) |
| Docker context path | Build context directory, useful for monorepos |
| Docker build stage | Target stage for multi-stage Dockerfile builds |
| Publish directory | Output directory served by the static build type |
| Build path | Subdirectory within the repo to use as the build root |
| Build args | Docker --build-arg values passed at image build time |
| Clean cache | Forces a clean build by ignoring the layer cache |
For Nixpacks builds you can additionally override the detected install command, build command, and start command without modifying the repository.
Source Types
| Source Type | Description |
|---|---|
github | OAuth app integration with GitHub |
gitlab | OAuth app integration with GitLab |
gitea | OAuth app integration with Gitea |
bitbucket | OAuth app integration with Bitbucket |
git | Raw Git URL with optional SSH key authentication |
docker | Pre-built image from Docker Hub or a private registry |
drop | ZIP archive uploaded directly through the dashboard |
Environment Variables
Open the Environment tab on any application to manage runtime environment variables. Variables are stored securely and injected into the container at runtime.You can also set Preview Environment variables separately — these are injected only into preview deployment containers, letting you point preview builds at a staging database while production uses a different connection string.
Deployment Options
- Auto Deploy (Webhooks)
- Manual Deploy
- Redeploy
When Auto Deploy is enabled (the default for Git-backed sources), Dokploy registers a webhook with your Git provider. Every push to the tracked branch triggers a new deployment automatically.The
triggerType field controls whether deploys fire on push events or tag events.Preview Deployments
Preview deployments create a temporary, isolated environment for each open pull request. When a PR is opened against your tracked branch, Dokploy builds and deploys it to its own subdomain so you can review changes before merging.- Enable preview deployments on the General tab with the Preview Deployments toggle.
- Configure a Preview Wildcard domain (e.g.
*.preview.example.com) and a Preview Port. - Set a Preview Limit to cap the number of concurrent preview environments.
- Preview environments inherit the application’s environment variables but can be overridden via Preview Env variables.
- You can require Collaborator Permissions before a preview deployment is triggered, preventing untrusted forks from abusing compute.
Preview deployments are tied to pull request lifecycle events. They are automatically cleaned up when a PR is closed or merged.
Rollbacks
Dokploy stores rollback snapshots alongside each successful deployment. When Rollback is active, every successful deploy saves the full application context (image, mounts, ports, configuration) so you can revert instantly. To roll back:- Open the application and navigate to the Deployments tab.
- Find the deployment you want to restore.
- Click the Rollback button next to that entry.
Scaling
Scale horizontally by increasing the Replicas count. Docker Swarm mode distributes the replicas across available nodes. Resource limits can also be set per application:| Field | Description |
|---|---|
| Replicas | Number of container instances to run (default: 1) |
| Memory Reservation | Soft memory limit (e.g. 256m) |
| Memory Limit | Hard memory limit — container is OOM-killed if exceeded |
| CPU Reservation | Guaranteed CPU share (e.g. 0.25) |
| CPU Limit | Maximum CPU share (e.g. 1.0) |
Port Configuration
By default Dokploy routes HTTP traffic through Traefik using the domain configuration. If your application also needs to bind a specific port, open the Ports tab to expose container ports:- Published Port — the host port that maps to the container.
- Target Port — the port your application listens on inside the container.
- Protocol —
tcporudp.