We’re packaging and distributing a web application and we feel the need to change the deb/rpm deployment to container way in order to control dependency versions (like a newer Python version on older distros).
I’ve looked around LXC/LXD and sounds tempting for old way of developing application with state stored inside the container. But we also need to deploy to RHEL/CentOS and both LXC and LXD packages state looks deplorable. And doesn’t look like LXD, nor LXC has a future in RHEL world.
I’ve sort of resisted Docker due to various design or security issues it had along the years, but also due the the stateless containers paradigm shift that we, old schoolers, need to embrace.
Is Docker now a reliable platform for small and large production deployments where app uptime is really important?
And what would be some best practices for packaging and distributing apps with Docker?
Since Discourse is exclusively deployed on Docker and I’m sure it has large deployments seems like the best place to ask this question.
We are running hundreds of servers over tens of datacenters in both bare metal and cloud, and every part of the Discourse app is ran on Docker containers.
Docker does have it’s fair share of bugs, but for us the benefits outweigh the problems.
Just one thing:
I don’t know exactly what you mean by this, but long term state like a database data, is usually kept in volumes that map to the host.