top | item 9054503

Ask HN: Did you use Dokku or Flynn in 2014? Was it worth it?

51 points| hayksaakian | 11 years ago | reply

44 comments

order
[+] progrium|11 years ago|reply
So, I wrote Dokku, helped design Docker, was co-architect of Flynn, and am now in R&D partnership with Deis. I also made Localtunnel, RequestBin, Hacker Dojo, etc etc if anybody is keeping track. I guess I'm not who this question was intended for, but I figured I'd share some context.

I can't speak as much to Flynn right now, but here is a fairly recent blog post about the current status of Dokku: http://progrium.com/blog/2014/10/28/deis-breathes-new-life-i...

tl;dr, after a long lull between 2013 and 2014, its activity has picked up and is slowly working towards a 1.0 including a major refactoring to address a lot of issues and bring it up to modern standards. In fact, here is our refactoring doc in progress: https://github.com/progrium/dokku/wiki/Refactoring

I feel the flaws of these projects quite deeply, especially Dokku. But I'm surprised to still run into so many people (just not as many here) that really love Dokku. Without them I would not be motivated to come back to it and make it what it should be.

Keep in mind Dokku was the first killer app for Docker and a lot of my design influence on Docker was to be able to easily make something like Dokku and eventually systems like Flynn, Deis, etc. But also so many other things...

[+] king_magic|11 years ago|reply
I used Dokku on DigitalOcean. Was it worth it? Honestly? No.

Would it have been worth it if there was any sort of clear roadmap for the future of Dokku, or anything coming out of Flynn other than "a first beta" (which I think I've seen at the top of flynn.io for literally months now)? Perhaps.

I eventually got fed up with the lack of direction, ditched Dokku, and went with a pure Docker-solution (which I documented here: https://medium.com/@robringham/how-interviewpad-uses-docker-...), and I don't feel like I lost much, and I don't regret moving away from Dokku. I feel like I have much more control now (at the cost of the Docker learning curve, which honestly wasn't that bad).

From my post on Medium:

"It [Dokku] worked great for a basic setup, but ultimately was simply not mature enough — minor customizations were straightforward, but anything past that (particularly around security) involved rolling up your sleeves and being willing to wade through Dokku’s source code (and that of Dokku’s plugins). Lack of direction in the project was another concern — Dokku is on hiatus, with Flynn, Dokku’s spiritual successor, in apparent eternal beta/preview mode."

To make up for losing Dokku's nice Heroku-like Git deployment, I rolled my own script-based Docker image swapping system for deployments, which has worked great.

[+] Scaevolus|11 years ago|reply
You could probably simplify your deployment script with the `docker rename` command introduced in 1.5.
[+] hayksaakian|11 years ago|reply
Background information for readers:

Dokku and Flynn are

Flynn:

"...something like Heroku that we could host ourselves..."

~ https://flynn.io/about

Dokku:

"Docker powered mini-Heroku."

~ https://github.com/progrium/dokku

------------

where heroku is a platform-as-a-service for hosting your rails/node/whatever websites/webapps

[+] sciurus|11 years ago|reply
Flynn has a much, much larger scope than Dokku or arguably even Heroku. To complete your quote:

"We knew we wanted something like Heroku that we could host ourselves, but we also knew that a Heroku clone wasn’t enough. We needed something suited to today’s needs. It wasn’t just about deploying stateless web apps, it was scaling them, provisioning and managing databases, and ideally the ability to run anything that could run on Linux all inside a single platform."

Another product mentioned in this thread is Deis, "a lightweight PaaS with a Heroku-inspired workflow".

~ http://deis.io/overview/

[+] jacques_chester|11 years ago|reply
I work on PaaS (Cloud Foundry) for my day job.

There's a big gap between the initial weekend-project implentation and all the many, many details that are required to build a full-featured one that "just works".

[+] statenjason|11 years ago|reply
We started using dokku just before 0.2.0 released for hosting our apps. One place it initially lacked was process management. If you wanted anything outside of your 'web' process in your Procfile, you were out of luck. I wrote a couple plugins[1][2] to handle that.

It worked alright for single sever deployments. When attempting to scale to a multi-server setup, dokku wasn't the right choice. I went down the rabbit hole of docker orchestration on top of CoreOS, but eventually backed out to go with Cloud66[3].

[1]: https://github.com/statianzo/dokku-shoreman [2]: https://github.com/statianzo/dokku-supervisord [3]: https://www.cloud66.com/

[+] colinwilson|11 years ago|reply
I've just started using Deis at work recently. Dokku looks like it was a small project sponsored by the company behind Deis. I haven't looked much at dokku-alt.

The thing that I really like about Deis is it supports deployments off of docker images in a private repo on top of git push deploys.

One of the things we do is host a REST service backed by data we generate. We can have jenkins automatically build and publish a docker container to our internal repo, then it's two REST calls to Deis to update the docker container that is running. We generate the data in Hadoop through a longish oozie workflow weekly and we can make two REST calls to repoint the REST service to some new database tables.

I also like that each layer or part of Deis can be swapped out. Want to run haproxy for the load balancing layer instead of nginx? Someone probably has a container that can be dropped in instead. Want swap a more advanced scheduler for etcd, you can swap in Mesos, YARN, or even Flynn's scheduler.

[+] cenhyperion|11 years ago|reply
I volunteer as the backend rails dev at http://balloonchallenge.org/ and ended up doing our ops, using Dokku to handle our main site's pushes. I'm terrible at devops and Dokku has been bulletproof so far. It's been flexible enough that when I needed to do things like edit some nginx config, it wasn't an issue.

I've hit some issues with docker and server restarts, but that's mostly due to my own incompetence with docker.

Overall it's a great tool that I recommend to a lot of friends. Paying the ridiculous Heroku prices just to be able to do a code push via git is silly, and Dokku largely solves that need among others.

[+] mr_luc|11 years ago|reply
Using dokku for a few BigCo projects since late 2012.

I want to do what another commenter (renegar) mentions, and simply use Docker/machine/compose, now that that is a viable option. For my next green-field project, I probably will.

Dokku doesn't try to realize all of the benefits of containerization by a long shot, but it's the most frictionless way to get started with containerization for small projects. The stack is a pretty common one (ubuntu, nginx, git push to deploy) and everything residing either in bash script or a docker image means it's almost as easy to extend as an ordinary, non-containerized server would be.

[+] renegar|11 years ago|reply
Heavy Docker user. Played with but have not used them, because Docker+machine+fig (now compose) already gives me everything I need (isolation, repeatable build, atomic deploy) without another infra layer to worry about.

Then again, I'm a one-man 360 shop and a control freak, and I'm not afraid to slap together a webhook-eating build+deploy process on a whim. So, my use case is probably not representative of Docker users in general.

[+] smt88|11 years ago|reply
Do you deploy in clusters? That's my main gap with Docker, and I haven't decided how to cover it. Deis[1] is the frontrunner at the moment, but a DIY solution is more appealing to me. I like to understand all the parts of my stack that I can.

1. http://deis.io

[+] SebastianSzturo|11 years ago|reply
We are using dokku for our internal applications and it works really great. The development stagnated a bit for the last months, but since the deis guys picked up the project it seams that they are starting to work on new features.

I also made a zero config dokku-cli[1] to get it more herokuish.

[1]: https://github.com/SebastianSzturo/dokku-cli

[+] frio|11 years ago|reply
Yes.

Flynn wasn't complete enough to use.

Dokku was too much of a moving target.

Deis requires substantially more resource than I'm willing to stand up for a minimal project.

My ideal solution would be a Dokku-like on a hardened CoreOS. I'm hoping some of these projects turn an eye to security in 2015 -- hardened toolchains, kernels, etc.

[+] nonuby|11 years ago|reply
The ideas behind 12 factor principles are pretty solid, however Im no longer sold on them as being the one and only way, in other words, sometimes your company setup might be better supported with alternative opinions (e.g. context rich logging, smart frontend routing - e.g. exploiting haproxy/nginx directives rather than dumb proxy forwarding). I guess this was contributing reason I didnt take openruko forward (although some others did). It is great there are supported/maintained heroku like implementations such as dokku/flynn but it might not be ideal or compatible with your style of devops. I guess my advice would be to take inspirations from these systems but ultimately you have weigh up if its a good fit.
[+] segphault|11 years ago|reply
I build a bunch of small web apps with a pretty diverse range of stacks. I like Dokku because it lets me deploy the apps in a uniform way regardless of what I use to build each one.

It's convenient, but Docker is likely overkill for the kinds of apps that I'm building. I don't have a compelling need to isolate them, I'm mainly taking advantage of the fact that Dokku automates the process of putting together the runtime environment and fetching the dependencies.

Dokku is reliable enough for what I'm doing, but I would frankly be reluctant to use it in production for anything that I really cared about.

[+] navyrain|11 years ago|reply
Have been using dokku on DigitalOcean since the 0.2.0, for personal projects. After bumping up against the poor quality of database plugins, I found "dokku-alt", which comes with pre-packaged well-functioning plugins for common use-cases, and seems to be good enough for my needs.

When evaluating the ecosystem, I got the impression Flynn has stalled out, and Deis looks to be too large for my modest requirements.

What I'd really like is ElasticBeanstalk or Heroku, but the per-app pricing quickly breaks the bank. My kingdom for a graceful way to host many tiny, low-traffic apps for cheap!

[+] captn3m0|11 years ago|reply
I used Dokku, and tried real hard to get it to work, but it just didn't work out. Getting started was easy, but once you start configuring things, and keep adding plugins for everything that you are doing, it keeps getting crazier.

In my case, I gave up when I couldn't get dokku to start a (critical) container on its own after a reboot. Ultimately, I think dokku is a good thing (in general) but to get it to succeed, it needs to get decoupled with docker a bit, so that people like me can use it easily without having to deal with docker.

[+] kaffee|11 years ago|reply
Dokku-alt has been tremendously useful for testing and small projects.

https://github.com/dokku-alt/dokku-alt

Dokku-alt is a fork of dokku.

[+] twunde|11 years ago|reply
So looking through the link, the value add appears to be in the plugins. For your use case what is the main benefit of using dokku-alt?
[+] robguthrie|11 years ago|reply
Yep. We (Loomio) have been using Dokku as an alternative to Heroku hosting - our main site is still on heroku, but we know that many people are using Dokku for Loomio hosting.

I spent about a week writing up the documentation: http://github.com/loomio/loomio/wiki

Since doing that we've seen a big increase in the number of poeple contributing code and helping out on Github. It's certainly been worth it from that point of view.

[+] morgante|11 years ago|reply
We gave both Dokku and Flynn a try earlier in 2014. Dokku ended up just being too simple for our needs—we're deploying to a cluster, not a single machine. Flynn still felt too immature and definitely isn't optimized for microservice architectures.

Instead, we hired progrium (the creator of Dokku) to help us build out a Fleet & CoreOS based deployment infrastructure. With a couple custom bash scripts, all run through CircleCI, it's worked pretty well so far.

[+] jdoconnor|11 years ago|reply
I used Dokku (and Dokku-alt) on Digital Ocean with the goal of making deploying easier. I ended up getting rid of it (and Docker) because for a small scale system, Docker wasn't worth the overhead (vs capistrano and ruby, or heroku's git push). On the other hand, at my last job -- where scale was much larger, we implemented a Docker orchestration system to handle our SOA using Consul as a registration system.
[+] sehrope|11 years ago|reply
I played around with it quite a bit in early 2014 and even wrote a plugin for it. It gave me a better understanding of Docker and abstracting things into containers. The internals are all bash scripts so it's pretty easy to follow how it works and modify it.

[1]: https://github.com/sehrope/dokku-logging-supervisord

[+] xena|11 years ago|reply
I use Dokku-alt but have previously done most of the groundwork for implementing my own such system: https://christine.website/projects/flitter

It's been mostly untouched since December, but it is 100% Go and runs on top of CoreOS.