In a lot of projects, this is usually done via README. It tells you what running dependencies to install and how to run certain commands.
This can get harder to maintain as things change, the project grows, and complexity increases.
I see two parts to automate here: actually setting up the environment, and running the application or orchestrating multiple apps.
How do you address this?
My life changed once I discovered dev containers in VS Code. Basically developing within a bootstrapped Docker container.
We’re following the same. It’s been a life changer for us.
Dev containers are the shit. We did the readme instructions style at my last job and it took new hires like a full day to set up, propagating changes was a nightmare and shit was always going wrong. We use dev containers now. Everyone gets the exact same version of everything with almost zero opportunity to screw it up. If anything gets messed up, it’s fixed by a rebuild almost every time.
How’s the filesystem performance? Whenever I’ve mounted something into a Docker Container, the performance has suffered. For example, things like NPM/MVN suddenly take way longer.
In my experience it’s greatly dependent on how much memory you dedicate to Docker. I’ve never ran any performance benchmarks, this is just anecdotal.
It depends on how you set it up. You’re going to take a performance hit using a bind mount. The docs recommend putting your workspace into an actual docker volume for better performance, but I haven’t tried that myself cause so far the bind mount has performed “good enough” for me.