Files
dokku/docs/plugins.md
2014-10-04 05:01:34 -04:00

12 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:

  1. take a look at the plugins shipped with dokku and hack away!
  2. upload your plugin to github with a repository name in form of dokku-<name> (e.g. dokku-mariadb)
  3. edit this page and add a link to it below!
  4. 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

Plugin Author Compatibility
Custom Domains motin Compatible with 0.2.* and master
Multiple Domains4 wmluke Compatible with 0.2.0 .
git rev-parse HEAD in env nornagon Compatible with 0.2.0
Rebuild application scottatron Compatible with 0.2.x
Multi-Buildpack pauldub
Docker Options dyson Requires dokku >= c77cbf1
Persistent Storage dyson Requires dokku >= c77cbf1
Volume (persistent storage) ohardy Compatible with 0.2.0
user-env-compile1 musicglue Compatible with dokku master branch
user-env-compile1 motin Compatible with 0.2.1
SSH Deployment Keys2 cedricziel 2014-01-17: compatible with upstream/master
SSH Hostkeys3 cedricziel 2014-01-17: compatible with upstream/master
Link Containers rlaneve Requires dokku >= c77cbf1
Host Port binding stuartpb Requires dokku >= c77cbf1. 2014-02-17: a043e98 targeting dokku @ latest
Docker name alex-sherwin Requires dokku >= c77cbf1
No VHOST alex-sherwin Requires dokku >= c77cbf1
Docker Direct heichblatt
Ports heichblatt
Debug heichblatt
Pre-Deploy Tasks michaelshobbs
Hostname michaelshobbs
VHOSTS Custom Configuration motin Requires https://github.com/progrium/dokku/pull/579
Multiple domains and per-app custom nginx.conf mikexstudios Works with v0.2.3
Supply env vars to buildpacks cameron-martin Works with v0.2.3
HTTP Auth Secure Apps matto1990 Works with v0.2.3
app-url mikecsh Works with 0.2.0

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

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.