| I would be sold on Docker if that would be easy. I have e.g. this stack: - 1 webserver/proxy, let's say nginx - 1 simple Rest API server, let's say in flask - 1 database, let's say PostgreSQL and I want to connect all 3 things and I want to preserve logs for the whole time and preserve the state of the database (of course). Also not to forget make all bulletproof for the Internet. And here all sorts of problems arise: What underlying OS, how to connect this containers, how to preserve state of my database and logs (it's not trivial as the article proofs again).
So overall Docker makes life not easier on this simple use-case, it makes life (of the sysadmin) more complicated. |
For example:
- What underlying OS? CF provides a minimal Ubuntu Linux "stemcell" and then has a standard "rootfs" for Linux containers
- a Python buildpack to assemble the container on top of this OS for your Flask server
- a built-in proxy/LB so you don't need one, if you want a static web server there's a static buildpack for Nginx
- an on demand MariaDB Galera cluster for your database if you want HA; PostgreSQL is there too but non-HA I think
- A standard environment variable based service marketplace & discovery system for connecting the containers to each other or to the database
- high availability (with load balancer awareness) for your containers at the container, VM or rack level
- reliable log aggregation of your containers (which you can divert to a syslog server).
As I said the only trouble is when you want to make this "bulletproof" is that there are a dozen "support VMs" are all there to make your app bulletproof and secure, e.g. an OAuth2 server, the load balancer, an etcd cluster, Consul cluster, and the log aggregator, etc. So it's overkill for one app, but good if you have several apps.
For single tenants and experimental apps, there's http://lattice.cf which runs on 3 or 4 VMs and is a subset of the above, but not what I'd call "production ready".