The biggest feature I'm missing in docker-compose is the ability to do zero downtime deployment (spawning a new container for a service while maintaining the old one up until the new one is ready would be enough).
Yes it does. Additionally if your service has more than 1 instance then Kontena will replace each instance one-by-one when deploying. You can even define that Kontena will wait for given port before moving to next instance.
Edit: btw, you should probably advertise this more on the home page, I'm pretty sure zero downtime is a big no go for many when it comes to docker-compose, especially rails users used to it with unicorn.
That's true. There are still lot's of hidden features that we should mention somewhere. We are currently improving our documentation, so hopefully things are better soon.
And thanks for feedback, it is always appreciated and motivating us to make it better!
Have services like Dokku, Empire(as nohaxplz pointed out) and now Kontena reached Heroku like convenience? I want to skip the dev ops but 500$ a month for an server with only 6 gigs of memory seems insane. If any dev here want to share there experience with any or all of them I would be happy to hear it.
There is a Dokku "application" VM you can one-click install on Digital Ocean. It's nearly identical to Heroku in terms of convenience and significantly better in price. For simple projects you might normally relegate to a Hobby tier or 1-2 dynos in Heroku, I would consider it a perfect fit.
This looks very interesting, comparable to empire and other heroku-like tools.
The stateful containers in particular seem interesting, and are implemented with data containers. How does the data in the data container stay persistent across nodes?
How does this manage service discovery? What about scaling?
Stateful containers do not move automatically across nodes but we are looking to integrate something like ClusterHQ Flocker (or implement our own using the new Docker plugin api).
For the service discovery part Kontena has builtin dns server. Each service will get their own dns name: <service_name>.kontena.local. And within a service you can point to individual container using <service_name>-<number>.kontena.local. Latest version (0.7) also introduced grid wide etcd so your application can also use that for custom service discovery.
Scaling is handled so that you can easily join new nodes to grid. Services support scaling so you basically just have to define how many service instances you want and Kontena scheduler will deploy instances (containers) across nodes.
Kontena does not replace Docker. It's a management and orchestration layer on the top of Docker. With Kontena you can manage and deploy your Docker applications.
Kontena applications can be described in YAML file (kontena.yml). Kontena.yml extends docker-compose.yml format by introducing some new attributes only supported in Kontena, for example scale of a service and deploy specific attributes.
A Service definition describes the container image, networking, scaling and stateful/stateless attributes for your application. Services may be linked together to create desired architecture. Each service is automatically assigned with internal DNS address that can be used inside your application for inter-Service communications.
I agree, some comparison is definitely needed. We will put some comparison not only to Deis and docker-compose but to other related services too to our website as soon as possible.
http://jisho.org/word/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A