What is Dev Container and see if you need it?

In modern software development, creating a consistent and reliable development environment can be challenging. Enter Dev Containers, a powerful tool for developers using Visual Studio Code (VS Code) to streamline their workflow. In this blog post, we’ll explore what Dev Containers are, how they work, and when you might need them in your development process.
Don't forget to check the useful resources section at the end of the article.
What is a Dev Container?
A Dev Container is a development environment defined by code and powered by Docker containers. It allows you to specify the exact tools, libraries, and settings your project needs in a single configuration file. When opened in VS Code, the Dev Container creates an isolated and consistent environment that mirrors your production or testing setup, regardless of the host machine's configuration.
At its core, a Dev Container is defined by a .devcontainer
folder containing:
- devcontainer.json: The main configuration file describing the environment.
- Dockerfile or docker-compose.yml: Defines the containerized environment, specifying base images, dependencies, and system-level configurations.
How Do Dev Containers Work?
When you open a project with a .devcontainer
configuration in VS Code, it uses Docker to spin up a container based on the provided settings. The editor then connects to this container, treating it as the active workspace. This setup ensures:
- A consistent environment for all developers working on the same project.
- Simplified onboarding since contributors don't need to manually install dependencies.
- Reduced risk of the "works on my machine" problem.

Why Use Dev Containers?
1. Consistent Development Environments
Dev Containers eliminate discrepancies caused by different local setups. Whether you’re running Windows, macOS, or Linux, the container ensures your project dependencies and configurations are consistent across the team.
2. Simplified Onboarding
For new team members, setting up a development environment can be a time-consuming task. With Dev Containers, they only need VS Code and Docker installed. Once the project is opened, the environment is automatically set up based on the container’s configuration.
3. Seamless Collaboration
When every team member uses the same Dev Container, you reduce bugs and errors caused by environment inconsistencies. Testing, debugging, and feature development are more predictable.
4. Align with Production Environments
By using the same Docker images for both development and production, you can more closely align your local development environment with your deployment setup.
How to Get Started with Dev Containers?
If you’re ready to try Dev Containers, here’s a quick overview of how to set one up:
- Install Docker: Make sure Docker Desktop or an equivalent is installed and running on your machine.
- Install the VS Code Dev Containers Extension: Download the "Dev Containers" extension from the VS Code marketplace. You can find a link to the extension in the resources section at the bottom.
- Add a Dev Container to Your Project:
- Open your project in VS Code.
- Use the command palette (
Ctrl+Shift+P
orCmd+Shift+P
on macOS) and runDev Containers: Add Development Container Configuration Files
. - Choose a predefined configuration or create a custom one.
{
"name": "App Development Container",
"dockerFile": "../Dockerfile.dev",
"workspaceFolder": "/app",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.shell.linux": "/bin/sh"
},
"extensions": ["ms-vscode.node-debug2", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
}
},
"postCreateCommand": "yarn install",
"remoteUser": "node"
}
- Reopen in Container: Once the configuration is added, use the
Dev Containers: Reopen in Container
command to spin up your environment.
If you want some help setting up docker in your NodeJS application, you can check this article:

Dev Containers are a game-changer for modern development workflows, offering consistency, ease of use, and better collaboration. If your team struggles with setup issues or environment discrepancies, exploring Dev Containers could save time and headaches. However, for simple projects or workflows, they might not be necessary.
Try them out and see if they streamline your development process!
That's it for today. See ya 👋
Resources

