Ask HN: Did you use Dokku or Flynn in 2014? Was it worth it?
46 comments
several other comments mentioned https://github.com/dokku-alt/dokku-alt
did you check it out? do you think it could fill in the gaps you mentioned?
did you check it out? do you think it could fill in the gaps you mentioned?
Interesting. I haven't heard of it, but it certainly looks interesting.
Having ditched Dokku and gone my own way, the one concern I'd have in going back to something like Dokku is that it always felt like there was too much "magic" going on beneath the hood, which made me nervous - particularly with respect to security.
RE: security - one thing I had a hard time of figuring out with Dokku was how the underlying Docker system played with firewalls (something I still struggle with, but at least I don't have a layer of scripty Dokku magic between me and Docker now).
Having ditched Dokku and gone my own way, the one concern I'd have in going back to something like Dokku is that it always felt like there was too much "magic" going on beneath the hood, which made me nervous - particularly with respect to security.
RE: security - one thing I had a hard time of figuring out with Dokku was how the underlying Docker system played with firewalls (something I still struggle with, but at least I don't have a layer of scripty Dokku magic between me and Docker now).
Dokku didn't - and still does not - do anything re: firewalls. Thats up to the server administrator to handle. For instance, you might choose to have this on a VPC in AWS, in which case you wouldn't need much of a firewall. Or if you're using this on Digital Ocean where there aren't Security Groups, it would be up to you to setup ipfw or iptables.
As far as magic, I'm not sure what you are getting at. The entire source is there for you to look at, and is actually quite readable. I don't write bash all day, but it was quite easy for me to jump in as a maintainer of dokku.
As far as magic, I'm not sure what you are getting at. The entire source is there for you to look at, and is actually quite readable. I don't write bash all day, but it was quite easy for me to jump in as a maintainer of dokku.
You could probably simplify your deployment script with the `docker rename` command introduced in 1.5.
Good to know - thanks! I'll give that a whirl.
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.
https://github.com/dokku-alt/dokku-alt
Dokku-alt is a fork of dokku.
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?
Dokku-alt lets me use a Dockerfile to build applications.
Dokku also has this feature as of the 0.3.15 release[1].
[1] https://github.com/progrium/dokku/releases/tag/v0.3.15
[1] https://github.com/progrium/dokku/releases/tag/v0.3.15
you may want to expand on this question. what is the background of this?
Are you looking for experience in a professional or personal setting? Large or small scale deployments?
Are you looking for experience in a professional or personal setting? Large or small scale deployments?
[deleted]
I have no idea what either of those things are
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
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
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/
"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/
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".
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".
[deleted]
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.
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.
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.
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.
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
1. http://deis.io
I do deploy in clusters, and Mesos is pretty much the default for me. It's much, much smarter in terms of work allocation than Deis or the like, it's not tied strictly to Docker, and, having been in its codebase, I trust its engineering much more than the alternatives. It's cautiously-designed software, and it is the better for it.
I would emphatically advise against rolling your own unless it's for projects you don't otherwise care about. Security and scalability are not trifles, and everybody else has already stepped on the rakes.
I would emphatically advise against rolling your own unless it's for projects you don't otherwise care about. Security and scalability are not trifles, and everybody else has already stepped on the rakes.
I've never heard of either of these projects. Context? What are they?
If you haven't heard of them, you haven't used them, so why comment? If you want to know what they are, you could just as easily Google them as post.
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.
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.
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.
It's been mostly untouched since December, but it is 100% Go and runs on top of CoreOS.
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.
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.
Excellent tools for setting up new services without mch effort; I found it ideal for microservices and even hackfests.
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/
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/
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.
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.
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!
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!
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.
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.
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
[1]: https://github.com/sehrope/dokku-logging-supervisord
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.
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.
No, and no.
Both are pretty lackluster and honestly not worth the effort.
Both are pretty lackluster and honestly not worth the effort.
I've tried to use Dokku in the past but opted for flynn and deis.io
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
I also made a zero config dokku-cli[1] to get it more herokuish.
[1]: https://github.com/SebastianSzturo/dokku-cli
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.
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.
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.
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.
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.
I started out with Dokku and ran into a number of issues. After moving to dokku-alt I've found it to be very useful for running small services.
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...
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...
And what about Tsuru? (https://tsuru.io)
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.
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.