Nov 25th, 2013

Dokku v0.2.0, the Docker powered mini-Heroku in around 100 lines of Bash

About 160 days ago Jeff released Dokku v0.1.0. Today we're happy to announce the v0.2.0 release of the Docker powered mini-Heroku in around 100 lines of Bash! Quite some things changed, but the core remained the same.

Installer

Dokku was already easy to setup:

$ wget -qO - https://raw.github.com/progrium/dokku/v0.2.0/bootstrap.sh | sudo DOKKU_TAG=v0.2.0 bash

but it now also ships with an installer to get you up and running.

Dokku installer

Extension points via plugins

The first version of Dokku was composed out of three additional components:

  • Docker the container runtime
  • buildstep to build the base images for your apps using Heroku's open source buildpacks
  • gitreceive handling the git push interface for Dokku

In the current release support for pluginhook was added. Plugins can now hook in to the build, release and deploy steps of Dokku. The addition of the plugin system spawned many community plugins. You can easily hook up your app with MongoDB, PostgreSQL or Redis! Don't forget to checkout the other community plugins and read up on how you can create your own.

Dokku commands over ssh

Integration of sshcommand makes it possible to run commands over ssh. Anywhere you would run dokku <command>, just run ssh dokku@progriumapp.com <command>:

$ dokku help
$ ssh dokku@myhost.com help

Note: it's recommended to add the -t option to the ssh command to request a pty. To avoid the need to type the -t option each time, simply create/modify a section in the .ssh/config, on the client side, as follows :

Host progriumapp.com
   RequestTTY yes

Configuration management

Dokku comes with support for environment configuration out of the box (thanks Jose!):

config <app> - display the config vars for an app
config:get <app> KEY - display a config value for an app
config:set <app> KEY1=VALUE1 [KEY2=VALUE2 ...] - set one or more config vars
config:unset <app> KEY1 [KEY2 ...] - unset one or more config vars

Running commands in your apps environment

It is now possible to run commands in the environment of your application:

$ dokku run node-js-app ls -alh
$ dokku run <app> <cmd>

Miscellaneous

Other changes in this release:

  • Added DOKKU_TRACE variable for verbose trace information
  • Backup/import plugin
  • Faster buildpack building, because the cache dir is preserved across builds
  • It's now possible to delete an application
  • Git handling is moved to a plugin
  • Integration test coverage and a running CI setup
  • Nginx is now a plugin

Supported buildpacks

Thanks to all the contributions to buildstep, Dokku now supports clojure, dart, go, java, meteor, nodejs, perl, php, play, python, ruby and scala apps out of the box!

Road ahead

With the v0.2.0 release of Dokku we provide a stable release for developers to run and deploy their apps on. In the meantime development continues and we soon hope to add Heroku style addon support and more flexible domain management. We're dedicated to provide a clean upgrade path for the next release.

Round up!

This release would not have been possible if it wasn't for all the contributors that helped us get there. A big shout out to the guys from deis (hi!), that also uses buildstep and helped on improving the support for the various buildpacks out there.

Do you want to get started? Checkout the README or boot a pre-installed droplet on DigitalOcean. Join us on Freenode in #dokku if you have any problems!