Dev Containers - The Ultimate Workflow
Hello friends, Today I wanted to share some thoughts about dev containers. Dev containers are containerized development environments. It originated as a VSCode extension that allowed developers to load their workspaces as a container. This has several advantages, especially for software engineers: - The dev container is a "fresh" environment and only has what you need - You can install specific versions of a language. For example. Python 3.11 or 3.13 - Features and packages can be included in the devcontainer.json file If you've ever tried to install several Dotnet or Python versions on a MacBook, you probably know how difficult it can be to get it to work. This problem is solved with dev containers. Dev containers solve the problem of slow onboarding. A developer can be up and running within minutes if a project uses dev containers. The dev container is built in minutes, and contains all packages he needs to start working on the project. But there is much more you can do with it. I have based my entire workflow around dev containers now. I don't install any packages locally anymore. Everything happens in dev containers. I work with Kubernetes every day. But I don't have kubectl installed on my machine. Instead, each project or cluster will get their own specific environment. Each environment has only what it needs. This way, it is impossible for me to run my commands on the wrong cluster. This is a much more advanced use of dev containers. Last week I released a course in KubeCraft where I share my complete workflow. You will learn how to build it yourself. If you are interested in using a containerized workflow combined with neovim, you'll love it. But the main advantage is that it has huge potential in larger organizations and enterprise environments. I have friends who work in organizations where it still takes 2 months for a developer to have what they need. In the age of DevOps, this is completely unacceptable and unnecessary. I think dev containers are one of the best answers to this problem.