I have always loved the push to deploy solution from Heroku, but the moment you start adding serious databases, Redis or Memcached cache, logging, etc. the invoices skyrocket. Meet Dokku, a mini-Heroku built on top of Docker. With Dokku, your application will be a Docker container, and it will be linked with other containers (databases, cache,...) much like in Heroku. Choose the cloud provider of your choice (DigitalOcean in our case, where you can create a Dokku droplet directly, ready out-of-the-box), and you have a powerful solution, at a much more reasonable price than with Heroku.
Migration from Heroku is straightforward, and you might only need to adjust some configuration parameters. Dokku uses Herokuish, so basically it understands Heroku buildpacks. Push to deploy works the same (Heroku is faster building the new images, but hey, it will also depend in the machine you install Dokku onto).
Nothing so far. I would like to see more references in Dokku's documentation to Docker, to better understand how the Dokku applications and plugins talk to each other.
If you feel confortable with Ubuntu servers, Dokku is a great alternative for small and medium sized projects.
Basically I needed a cheaper alternative to Heroku, but with the same (main) functionality.