I'm taking on a bit of contract development work, and as part of it I'm going to need to install a toolchain including things like the AWS CLI tool, a particular version of Ruby, NodeJS, kubectl and probably other things I don't know about yet. I have a Mac desktop I'd like to use for this work, but in the past I've always been fastidious about isolating different project dev environments, mainly due to having had horrible experiences with conflicts between different versions of tools
The last time I was contracting I usually did a combination of the following:
1. Spin up a project-dedicated Linux VM locally or on EC2 / DigitalOcean / Linode
2. Run Docker containers / compose stacks locally
3. Use a dedicated computer just for the project and run everything natively (though this was only really practical for big, long-running projects)
As this work is part-time and I'm not sure how long it'll last, I'm unwilling to do item 3, but having worked with Python recently I was wondering whether there was a lighter-weight way of doing this that doesn't rely on VMs which I could just run on my Mac, similar to Virtualenv? My vision is that all my project tools are only available (and 'loaded') when I'm within a particular project folder on my Mac. I don't mind activating this environment manually if needed.
I'm pretty sure I've come across tools like this in the past, with BSD jails and also running Docker natively on Linux, but I've always found Docker to be really slow and resource-heavy on MacOS, so I'd probably prefer to avoid that this time. I've played with Nix flakes recently, and I suspect these will do just what I want, but unfortunately I find Nix to be a really opaque system which seems to be fragmented by so many opinions that I suspect I'd spend more time tinkering with it than doing actual work!
I'd really welcome any thoughts on this from Linux / BSD-based developers. I'm sure in 2024 (nearly 2025!) there must be some good tooling around for this. Thanks
EDIT - I am currently investigating Devbox (https://www.jetify.com/devbox/), which seems quite promising.
The last time I was contracting I usually did a combination of the following:
1. Spin up a project-dedicated Linux VM locally or on EC2 / DigitalOcean / Linode
2. Run Docker containers / compose stacks locally
3. Use a dedicated computer just for the project and run everything natively (though this was only really practical for big, long-running projects)
As this work is part-time and I'm not sure how long it'll last, I'm unwilling to do item 3, but having worked with Python recently I was wondering whether there was a lighter-weight way of doing this that doesn't rely on VMs which I could just run on my Mac, similar to Virtualenv? My vision is that all my project tools are only available (and 'loaded') when I'm within a particular project folder on my Mac. I don't mind activating this environment manually if needed.
I'm pretty sure I've come across tools like this in the past, with BSD jails and also running Docker natively on Linux, but I've always found Docker to be really slow and resource-heavy on MacOS, so I'd probably prefer to avoid that this time. I've played with Nix flakes recently, and I suspect these will do just what I want, but unfortunately I find Nix to be a really opaque system which seems to be fragmented by so many opinions that I suspect I'd spend more time tinkering with it than doing actual work!
I'd really welcome any thoughts on this from Linux / BSD-based developers. I'm sure in 2024 (nearly 2025!) there must be some good tooling around for this. Thanks
EDIT - I am currently investigating Devbox (https://www.jetify.com/devbox/), which seems quite promising.
Last edited: