To succeed with Docker and running Java containers in production, the key element is your image. The image — effectively the blueprint for running your containers — needs to be as good as your code.

For this post, I'll be building my container using the one Java process per container practice. In almost all cases, you should only run a single process in a single container. Decoupling applications into multiple containers will make it much easier to scale horizontally and reuse containers.