Docker or more generally, containers, are great for lots of use cases, but they don’t come for free. Container runtimes, network virtualization, orchestration platforms, and registries are all added to the stack. Like all software, they bring their own bugs and operational burden with them. For most Django sites, containers are a heavyweight solution to a lightweight problem.
Despite the overhead, Docker gets a lot of things right. It makes it easy to generate an image of your application in a known state, test the image, pull the image down to your server, apply a specific configuration environment, and run it in a secure sandbox.
But guess what? We can do all that without Docker! Using mostly “boring” software that is already a part of your server or development environment. I’ll walk you through each step of the pipeline and show you how to:
Generate immutable deployment artifacts
Test the artifact
Deploy the artifact
Sandbox your application to improve security
Quickly rollback to a previous version