Performance, Scaling, and HA requirements

The only part you have to run in Docker is the application itself; Redis, PostgreSQL, etc can all be run without Docker, and IMO that’s how it should be done at scale, if you already know how to configure and run those services. The all-in-one (“standalone”) and data/app split containers that we provide are made available for the convenience of people running small setups who don’t have the knowledge and experience to do all the setup themselves.

Running the app itself in Docker is a no-brainer, though, and I’d strongly recommend against trying to do it any other way. As @codinghorror said, I’ve got the scars from Docker’s many bugs and inane design decisions, I don’t trust Docker as far as I can comfortably spit a rat, and I’ve also got a nearly decade’s worth of experience deploying (and scaling) Rails apps. Even with all that behind me, if I was going out and running my own Discourse site, I’d still run the app servers in Docker. You couldn’t get me to put redis and pg into containers if you had a gun to my head, but I wouldn’t dream of running the app itself “by hand”. There’s just too much twisty passage craziness to unwind and reproduce, and because the official deployment artifact is the docker image, nobody’s going to warn me in advance if something comes down the pipe that requires a change to my artisinal hand-crafted appserver environment.