Your own mini-Heroku for $5/month
blog.rajivm.com
blog.rajivm.com
I am a long-time non-web developer who has been doing a Rails side-project for the past year or so. I was using Heroku for free hosting, which was a breeze when I came across the first of these "$5 Heroku" posts (I have seen at least 5 or 6 prior to this one). Since then I've followed at least 5 different tutorials from start to finish trying to get Dokku up on DigitalOcean. So far, no successes.
Now, this is largely my fault (I'm a beginner in this realm), but I also think the technology is not as mature as a "mini-Heroku" would suggest. Part of the big ease of Heroku is, that you don't have to create Heroku before you use it.
Have you tried doing a really simple sample app? It may take some coercing to get an existing Heroku app to run (there's some differences between Heroku's buildpacks and Dokku, like in the PHP buildpack). I did write a blog post on the topic of DO-with-Dokku specifically not too long ago, which goes over deploying a "hello world" Node app: http://www.andrewmunsell.com/blog/dokku-tutorial-digital-oce...
Of note for anyone reading: 1. Since the buildpacks are based on Heroku, if you're having trouble try seeing what it'd take to get your app deployed there. For example with Rails 3.2, if you pre-compile your assets on the production server while deploying an app it will try to instantiate your app and test a database connection; however, Dokku doesn't provide the database configuration until after this step of the deployment so your deploy will fail. This is fixed by either pre-compiling locally or changing a setting in application.rb. In Rails 4 I believe you just have to precompile your assets and check them along with the manifest into your repo. (Ref: https://github.com/progrium/dokku/issues/165, https://github.com/progrium/dokku/issues/202)
2. It's probably easier to just set up a separate database rather than relying on one of the project's plugins. Right now they're just a little too obfuscated and hard to troubleshoot (the dokku-postgresql plugin I used would lose its persistent volume on server reboot).
I agree. It defeats the purpose of services like Heroku where users want a place to upload code and have it just work.
You also make a good point on maturity. It took many engineers years to make Heroku a mature product and keep it humming.
I do think this stuff is cool though. There's definitely a place for this sort of thing but I don't know if it should be marketed as PaaS. As soon as something becomes DIY, I would stop considering it SaaS or PaaS.
Full disclosure: I'm an Engineer at Salesforce which owns Heroku
That being said, I agree 100% for pretty much every other use case.
Now that releases are being tagged (0.2.0, for instance), using it in a semi-stable manner should be easier :).
It seems like that is always missing from these conversations. Maybe it has a bad price point or something? I'm going to look into it soon... Seems to me that standard EB + RDS + ElastiCache would make a lot more sense than these single server not-proven-scalable setups. I can't run a real production Rails app with this Dokku setup it seems...
And then if I need Solr or something extra I could stick it on the EB instance or spin up a new EC2 for services. Heroku add-on services cost so much that I bet running a micro instance is cheaper than paying the monthly fee for the add-on, plus you could stick a few on 1 box since you're limited only by bandwidth/CPU.
Using AWS Micro instances will not solve your problem, no matter how many you have. It's also worth noting that AWS costs around 5x more than a good dedicated server, which is a factor for many people.
But as far as AWS micro is concerned, it was an example for starter size. These are easily scalable I believe either through Elastic Beanstalk tools or manually. On RDS for example (which I am more familiar with) if you have a small DB instance that is hitting CPU limits, you right click & hit modify... about a minute later it is now whatever size you want. And I think their instances get large enough that you would have to be running a reallll heavily-trafficked app to actually hit a wall. (I haven't read enough about EB which is why I asked the question but I think it is auto-scaling)
Again, maybe not as cost effective as dedicated but I think at this point it may be a good compromise between the two while the container community works out some deployment hurdles.
We use Elastic Beanstalk + RDS in a production environment. Its okay, but expensive and the performance is lackluster. We'll be moving to physical hardware shortly.
I think these are all "noisy neighbor" issues and I would gladly leapfrog up from one host to another so long as the process isn't much more complicated and the performance is more reliable.
I haven't used dokku and don't know what it specifically adds.
Octopress bare repo: https://github.com/rodeva/octopress-dokku-bare
Dokku fork for Jekyll and Octopress: https://github.com/rodeva/dokku
I think it takes 2 things... 1. Simple deploy of languages/services. 2. Scalability solutions (processing power / RAM / network interactivity).
I bet #1 is possible here, #2 seems less clear to me. any knowledge off the top of your head?
For a small test system ok / or hobby project, but not for a productive usage.
Docker (as well as Dokku) still aren't 1.0 or deemed production ready by their respective authors, so you still should always investigate both products before using them. But it is really cool to see products like Dokku and Flynn being created and maintained, since it makes deploying apps so much easier.