Stop Hunting Dependencies with Dev Containers

Stop Hunting Dependencies with Dev Containers

Soren FischerBy Soren Fischer
Quick TipTools & Workflowsdockervscodedevcontainersproductivitydevops

Quick Tip

Use a devcontainer.json file to automate the installation of all CLI tools and extensions required for your project.

Most developers think a "clean machine" means a perfectly managed set of local installs, but that's a lie. You aren't actually solving the problem; you're just delaying the inevitable version mismatch. This post looks at how Dev Containers solve the dependency hunt by moving the environment into a containerized sandbox.

What are Dev Containers?

Dev Containers are a way to define your development environment through a devcontainer.json file that instructs tools like Visual Studio Code to run your workspace inside a specific Docker container. Instead of installing Python 3.11, Node 20, or a specific version of PostgreSQL directly on your macOS or Windows machine, you define those requirements in code.

The beauty is in the isolation. You can switch from a Go project to a Rust project in seconds without worrying about your PATH variables getting messy—or worse, breaking your OS-level dependencies.

How do Dev Containers improve developer workflow?

Dev Containers improve workflow by ensuring every developer on a team uses the exact same toolchain, eliminating the "it works on my machine" excuse. When you pull a repository, you aren't just pulling code; you're pulling the entire environment required to run it.

Here is how they compare to traditional local development setups:

Feature Local Installation Dev Containers
Setup Time High (Manual installs) Low (Automated via config)
Version Conflicts Common (Global installs) Non-existent (Isolated)
Onboarding Slow (Read the README) Instant (One-click start)

If you're already using containers for your production runtime, you might find these ways to optimize your local development environment with Docker particularly useful. It’s a natural progression from running a database in a container to running your entire IDE inside one.

Can I use Dev Containers with any language?

Yes, you can use Dev Containers with virtually any language or toolset as long as you can wrap it in a container image.

The workflow usually follows these steps:

  1. Define a Dockerfile that contains your compilers, linters, and runtimes.
  2. Create a devcontainer.json to configure extensions and settings.
  3. Open the folder in your IDE (like VS Code or GitHub Codespaces).
  4. The IDE builds the container and connects your editor to the inside of the environment.

It's a massive relief for anyone who has ever spent a whole afternoon debugging why a specific brew install broke their local build. You aren't just managing code anymore—you're managing the entire world that the code lives in.