Some folks on the internet were interested in how I had managed to ditch Docker for local development. This is a slightly overdue write up on how I typically do things now with Nix, Overmind and Just.
Some folks on the internet were interested in how I had managed to ditch Docker for local development. This is a slightly overdue write up on how I typically do things now with Nix, Overmind and Just.
If your dev documentation includes your devs running
docker build
, you’re doing docker wrong.The whole point is that you can build a working container image and then ship it to a registry (including private registries) so that your other developers/users/etc don’t have to build them and can just run the existing image.
Then for development, you simply use a bind mount to ensure your local copy of the code is available in the container instead of the copy the container was built with.
That doesn’t solve the performance issues on Windows and Mac, but it does prevent the “my environment is broke” issues that docker is designed to solve
Agreed, we still do this in the areas where we use Docker at day job.
I think the mileage with this approach can vary depending on the languages in use and the velocity of feature iteration (ie. if the company is still tweaking product-market fit, pivoting to a new vertical, etc.).
I’ve lost count of the number of times where a team decides they need to
npm install
something with a heavynode-gyp
step to build native modules which require yet another obscure system dependency that is not in the base layer. 😅