When we started, in 2020, there were many rough edges both in the extension and WSL2, but the experience got remarkably better over time.
When we started, in 2020, there were many rough edges both in the extension and WSL2, but the experience got remarkably better over time.
But it still showed significant friction for (a) very junior developers (b) non technical business people who wanted to code. Generally the same folks that would need help installing PostGIS on their machines, etc. People just wanted to merge some cool ideas into our codebases and now they needed to learn wtf Docker and Docker Compose are[1]. That was a huge time waster.
Devcontainers are neatly integrated into VS Code's UI, so they solved the "last mile" problem of allowing non-tech folks to use containers.
[1] https://www.youtube.com/watch?v=AbSehcT19u0&themeRefresh=1
You can use plain Dockerfiles if you prefer, dev containers provides some tooling to smooth out the rough edges of using Docker to host your dev environment including mounting your source code into the container etc. Details are at: https://containers.dev
* You can add a docker compose file as well as a docker file. This means that all of the services you want to exist (postgres, redis, etc) don't have to be separately installed/updated by each developer on the team.
* Good vscode integration. It doesn't feel like you're developing inside a container. You open a terminal, and its inside your containerized dev environment.
* "Features" (https://containers.dev/implementors/features/ ) which allow you to quickly add functionality to your dev containers. For example, when I want to add the terraform CLI, I add the corresponding feature to the devcontainer.json.
* At the end of the day it's all built on docker, docker-compose, etc so there is minimal lock-in to vscode
You can do exactly what you're saying--have a dockerfile as the source of truth--right now. And you can install the devcontainer CLI and use it outside vs code if necessary too: https://code.visualstudio.com/docs/devcontainers/devcontaine...
However
> vs. spending days installing tools from a (likely) undocumented and out of date process
This makes no sense, that is not an advantage over a dockerfile.
On GitHub codespaces it gives you a button on the website that is literally one click and get vs code in the browser connected to your dev container launched in their cloud--you don't even need vs code or anything installed and can code from a tablet for example.
If you think about it Nix Flakes shares the same philosophy. But flakes, as from my experience a year and a half ago, are ergonomics-wise terrible.