13 KiB
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
cd /var/lib/dokku/plugins
git clone <git url>
dokku plugins-install
todo: add a command to dokku to install a plugin, given a git repository
dokku plugin:install <git url>?
Creating your own plugin
If you create your own plugin:
- take a look at the plugins shipped with dokku and hack away!
- upload your plugin to github with a repository name in form of
dokku-<name>(e.g.dokku-mariadb) - edit this page and add a link to it below!
- subscribe to the dokku development blog to be notified about API changes and releases
Community plugins
Note: The following plugins have been supplied by our community and may not have been tested by dokku maintainers.
Datastores
| Plugin | Author | Compatibility |
|---|---|---|
| CouchDB | RaceHub | Compatible with 0.2.0 |
| MariaDB | Kloadut | Compatible with 0.2.0 |
| MariaDB (single container) | ohardy | Compatible with 0.2.0 |
| MongoDB (single container) | jeffutter | |
| PostgreSQL | Kloadut | Compatible with 0.2.0 |
| 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 | jezdez | Compatible with 0.2.0 |
| PostgreSQL (single container) | ohardy | Compatible with 0.2.0 |
| PostGIS | fermuch | |
| Redis | jezdez | Requires https://github.com/rlaneve/dokku-link; compatible with 0.2.0 |
| Redis | luxifer | |
| Redis (single container) | ohardy | Compatible with 0.2.0 |
| 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) |
| MySQL | hughfletcher | |
| Memcached | jezdez | Compatible with 0.2.0 |
| Neo4j | Aomitayo | |
| 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) |
| Postgresql | jlachowski | IP & PORT available directly in linked app container env variables (requires link plugin) |
| Memcached | jlachowski | IP & PORT available directly in linked app container env variables (requires link plugin) |
| Varnish | Zenedith | Varnish cache between nginx and application with base configuration |
Process Managers
| Plugin | Author | Compatibility |
|---|---|---|
| Circus | apmorton | |
| Shoreman | statianzo | Compatible with 0.2.0 |
| Supervisord | statianzo | Compatible with 0.2.0 |
| Logging Supervisord | sehrope | Works with dokku @ c77cbf1 - no 0.2.0 compatibility |
| Forego | iskandar | Compatible with 0.2.x |
Dokku Features
1 Similar to the heroku-labs feature (see https://devcenter.heroku.com/articles/labs-user-env-compile)
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)
4 Conflicts with VHOSTS Custom Configuration
5 On Heroku similar functionality is offered by the heroku-labs pipeline feature, which allows you to promote builds across multiple environments (staging -> production)
Other Add-ons
| Plugin | Author | Compatibility |
|---|---|---|
| Node | pnegahdar | |
| Node | ademuk | |
| Chef cookbooks | fgrehm | |
| Bower install | alexanderbeletsky | |
| Bower/Grunt | thrashr888 | |
| Bower/Gulp | gdi2290 | |
| Elasticsearch | robv | |
| Elasticsearch | jezdez | Compatible with 0.2.0 |
| Elasticsearch1 | blag | Compatible with 0.2.0 |
| HipChat Notifications | cef | |
| [Graphite/statsd] (https://github.com/jlachowski/dokku-graphite-plugin) | jlachowski | |
| APT | F4-Group | |
| User ACL | Maciej Łebkowski | |
| PrimeCache | darkpixel |
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.