piku, inspired by dokku, allows you do git push deployments to your own servers, no matter how small they are.
 
 
 
Go to file
Rui Carmo 7a743d9c91 Merge branches 'master' and 'master' of github.com:rcarmo/piku 2016-03-27 12:49:57 +01:00
uwsgi add uwsgi init script 2016-03-27 12:42:18 +01:00
.gitignore Initial commit 2016-03-26 12:52:54 +00:00
LICENSE Initial commit 2016-03-26 12:53:50 +00:00
README.md Update README.md 2016-03-26 23:38:20 +00:00
piku.py add uwsgi init script 2016-03-27 12:42:18 +01:00
requirements.txt first pass at deploy 2016-03-26 22:08:10 +00:00

README.md

piku

The tiniest Heroku-like PaaS you've ever seen, inspired by dokku.

Motivation

I kept finding myself wanting an Heroku-like way to deploy stuff on a few remote ARM boards and my Raspberry Pi cluster, but since dokku still doesn't work on ARM and even docker can be overkill sometimes, I decided to roll my own.

Project Status/ToDo:

From the bottom up:

  • Support Java deployments
  • Support Go deployments
  • chroot isolation
  • Support barebones binary deployments
  • Installation instructions
  • Basic CLI commands to manage apps
  • virtualenv isolation
  • Support Python deployments
  • Repo creation upon first push
  • Basic understanding of how dokku works

Workflow

  • Set up an SSH git remote pointing to piku with the app name as repo name (git remote add paas piku@server:app1)
  • git push paas master your code
  • piku determines the runtime and installs dependencies
  • It then looks at a Procfile and starts the relevant workers

Later on, I intend to do fancier dokku-like stuff like reconfiguring nginx, but a twist I'm planning on doing is having one piku machine act as a build box and deploy the finished product to another.

Might take a while, though.

Target Platforms

As a baseline, I intend to make sure this runs on the original Rasbperry Pi Model B (which is where I'm testing it).

But since I have an ODROID-U2, a bunch of Pi 2s and a few more boards on the way, it will be tested on a number of places where running x64 binaries is unfeasible.

In general, it will likely work in any POSIX-like environment where you have Python and SSH (I'm very likely to test it under Cygwin at some point).

Target Runtimes

I intend to support Python, Go and Java, but will be focusing on Python first, moving from shared runtime to virtualenv (and later, if feasible, pyenv support).

FAQ

Q: Why piku?

A: Partly because it's supposed to run on a Pi, because it's Japanese onomatopeia for 'twitch' or 'jolt', and because I know the name will annoy some of my friends.

Q: Why not just use dokku?

A: I use dokku daily, and for most of my personal stuff. But the dokku stack relies on a number of x64 containers that need to be completely rebuilt for ARM, and when I decided I needed something like this (March 2016) that was barely possible - docker itself is not fully baked for ARM yet, and people are still trying to get herokuish and buildstep to build on ARM...)