Working on containerised applications.
WHAT IT PROVIDES
The same dependencies as production New developers productive quickly No conflicting versions on the machine
WHAT IT COSTS
Slower file operations on some platforms Memory consumed by the underlying machine Rebuild time interrupting flow
WHAT TO DO ABOUT REBUILD TIME
Mount the source rather than copying it, so changes appear immediately.
WHAT THAT ENABLES
Hot reloading, as if running locally.
WHAT TO KEEP SEPARATE
Development configuration from production.
HOW
Override files, layered on a base.
WHAT TO RUN LOCALLY
The application and its immediate dependencies.
WHAT NOT TO RUN LOCALLY
Every service in the system.
WHY
It consumes the machine and takes an age to start.
WHAT TO DO INSTEAD
Point at shared development instances, or use substitutes.
WHAT TO BE CAREFUL WITH
File permissions differing between the host and the container Slow mounted volumes on some platforms
WHAT TO DO ABOUT SLOW MOUNTS
Mount only source, and keep dependencies inside the container.
WHAT TO DOCUMENT
The single command that starts everything.
WHY
It is what makes a new developer productive on day one.