The most discouraging part of software development is setting up a local development environment. Coding is relatively easy.
Typically it takes me over a day of effort for setting up all tools.
Also typically software updates sometimes break a setup and lead to more changes.
Having a development environment in Docker means that it is replicable. You can switch machines or share the environment with team easily.
This method works with non-GUI setup. A solution for GUI is Vagrant. I did not use it because I use only 2 GUI tools, VS Code and Chrome.
Initially, I tried creating the Container without using extensions. It was painful. Remote - Container for VS Code extension makes it simple.
always have docker-compose for developer environment setup as close as possible to docker-compose up wiki docker-compose up with intellij