Plugins
Dokku itself is built out of plugins and uses pluginhook for its plugin system. In essence a plugin is a collection of scripts that will be run based on naming convention.
Let's take a quick look at the current dokku nginx plugin that's shipped with dokku by default.
nginx-vhosts/
├── commands # contains additional commands
├── install # runs on dokku installation
└── post-deploy # runs after an app is deployed
Installing a plugin
Creating your own plugin
Community plugins
Note: The following plugins have been supplied by our community and may not have been tested by dokku maintainers.
Datastores
Relational
| Plugin | Author | Compatibility |
|---|---|---|
| MariaDB | Kloadut | Compatible with 0.2.0 |
| MariaDB (single container) | ohardy | Compatible with 0.2.0 |
| MySQL | hughfletcher | |
| PostgreSQL | Kloadut | Compatible with 0.2.0 |
| PostgreSQL | jlachowski | IP & PORT available directly in linked app container env variables (requires link plugin) |
| PostgreSQL (single container) | jeffutter | This plugin creates a single postgresql container that all your apps can use. Thus only one instance of postgresql running (good for servers without a ton of memory). |
| PostgreSQL (single container) | ohardy | Compatible with 0.2.0 |
| PostgreSQL (single container) | Flink | Single Postgresql container with official Postgresql docker image. Compatible with 0.3.16 |
| PostGIS | fermuch |
Caching
| Plugin | Author | Compatibility |
|---|---|---|
| Memcached | jlachowski | IP & PORT available directly in linked app container env variables (requires link plugin) |
| Redis | luxifer | |
| Redis | sekjun9878 | A better Redis plugin with automatic instance creation and Dokku Link support |
| Redis (single container) | ohardy | Compatible with 0.2.0 |
| Varnish | Zenedith | Varnish cache between nginx and application with base configuration |
Queuing
| Plugin | Author | Compatibility |
|---|---|---|
| RabbitMQ | jlachowski | IP & PORT available directly in linked app container env variables (requires link plugin) |
| RabbitMQ (single container) | jlachowski | IP & PORT available directly in linked app container env variables (requires link plugin) |
Other
| Plugin | Author | Compatibility |
|---|---|---|
| CouchDB | RaceHub | Compatible with 0.2.0 |
| Elasticsearch | robv | Not compatible with >= 0.3.0 (still uses /home/git) |
| Elasticsearch1 | blag | Compatible with 0.2.0 |
| MongoDB (single container) | jeffutter | |
| Neo4j | Aomitayo | |
| RethinkDB | stuartpb | 2014-02-22: targeting dokku @ latest; will fail with Dokku earlier than 28de3ec. |
| RiakCS (single container) | jeffutter | Incompatible with 0.2.0 (checked at dccee02) |
Process Managers
| Plugin | Author | Compatibility |
|---|---|---|
| Circus | apmorton | |
| Forego | iskandar | Compatible with 0.2.x |
| Logging Supervisord | sehrope | Works with dokku @ c77cbf1 - no 0.2.0 compatibility |
| Monit | cjblomqvist | |
| Shoreman | statianzo | Compatible with 0.2.0 |
| Supervisord | statianzo | Compatible with 0.2.0 |
Dokku Features
| Plugin | Author | Compatibility |
|---|---|---|
| app-url | mikecsh | Works with 0.2.0 |
| Docker Direct | heichblatt | |
| Dokku Name | alex-sherwin | dokku >= c77cbf1 |
| Dokku Registry1 | agco-adm | |
| git rev-parse HEAD in env | cjblomqvist | Compatible with 0.3.0 |
| Graduate (Environment Management) | Benjamin-Dobell | dokku >= v0.3.14 |
| HTTP Auth | Flink | |
| HTTP Auth Secure Apps | matto1990 | Works with v0.2.3 |
| Hostname | michaelshobbs | |
| Link Containers | rlaneve | dokku >= c77cbf1 |
| Maintenance mode | Flink | |
| Multi-Buildpack | pauldub | |
| Ports | heichblatt | |
| Pre-Deploy Tasks | michaelshobbs | |
| SSH Deployment Keys2 | cedricziel | 2014-01-17: compatible with upstream/master |
| SSH Hostkeys3 | cedricziel | 2014-01-17: compatible with upstream/master |
| Volume (persistent storage) | ohardy | Compatible with 0.2.0 |
| App Configfiles | alexkruegger | Compatible with 0.3.17+ |
1 On Heroku similar functionality is offered by the heroku-labs pipeline feature, which allows you to promote builds across multiple environments (staging -> production)
2 Adds the possibility to add SSH deployment keys to receive private hosted packages
3 Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
Other Plugins
| Plugin | Author | Compatibility |
|---|---|---|
| Airbrake deploy | Flink | |
| APT | F4-Group | |
| Chef cookbooks | fgrehm | |
| Bower install | alexanderbeletsky | |
| Bower/Grunt | thrashr888 | |
| Bower/Gulp | gdi2290 | |
| Bower/Gulp | jagandecapri | |
| Docker auto volumes | Flink | 0.3.17+, auto-persist docker volumes |
| HipChat Notifications | cef | |
| Graphite/statsd | jlachowski | |
| Logspout | michaelshobbs | |
| Node | pnegahdar | |
| Node | ademuk | |
| Rails logs | Flink | |
| Reset mtime | mixxorz | 0.3.15+, Dockerfile support |
| Slack Notifications | ribot | |
| User ACL | Maciej Łebkowski | |
| Webhooks | nickstenning | |
| Wordpress | abossard | Dokku dev, mariadb, volume, domains |
1 Forked from jezdez/dokku-elasticsearch-plugin: uses Elasticsearch 1.2 (instead of 0.90), doesn't depend on dokku-link, runs as elasticsearch user instead of root, and turns off multicast autodiscovery for use in a VPS environment.
Deprecated Plugins
The following plugins have been removed as their functionality is now in Dokku Core.
| Plugin | Author | In Dokku Since |
|---|---|---|
| Custom Domains | motin | v0.3.10 (domains plugin) |
| Debug | heichblatt | v0.3.9 (trace command) |
| Docker Options | dyson | v0.3.17 (docker-options plugin) |
| Events Logger | alessio | v0.3.21 (events plugin) |
| Host Port binding | stuartpb | v0.3.17 (docker-options plugin) |
| Multiple Domains1 | wmluke | v0.3.10 (domains plugin) |
| Nginx-Alt | mikexstudios | v0.3.10 (domains plugin) |
| Persistent Storage | dyson | v0.3.17 (docker-options plugin) |
| PrimeCache | darkpixel | v0.3.0 (zero downtime deploys) |
| Rebuild application | scottatron | v0.3.14 (ps plugin) |
| Supply env vars to buildpacks2 | cameron-martin | v0.3.9 (build-env plugin) |
| user-env-compile2 | musicglue | v0.3.9 (build-env plugin) |
| user-env-compile2 | motin | v0.3.9 (build-env plugin) |
| VHOSTS Custom Configuration | motin | v0.3.10 (domains plugin) |
1 Conflicts with VHOSTS Custom Configuration 2 Similar to the heroku-labs feature (see https://devcenter.heroku.com/articles/labs-user-env-compile)