Templates for consistent dev environments using Dev Containers (VS Code or GitHub Codespaces). Each branch targets a specific stack with sensible defaults—ideal for reproducible development.
In production, Docker makes builds and environments predictable, portable, and repeatable. Dev Containers bring the same reliability to development.
A Dev Container is a Docker container preconfigured with the required tools, runtimes, and shell settings. When used with VS Code, it ensures the correct dependencies, versions, and tooling are always in place — avoiding conflicts between projects and removing the need for manual setup. One project may need Python 3.12, another Python 3.9 — Dev Containers keep these environments isolated so they never interfere with one another.
This approach delivers consistent environments across platforms and team members, isolates development from the host system for clean and reproducible workspaces, and makes onboarding effortless: simply clone the repo and reopen it in a container.
To show their versatility, this repo includes:
- Languages: Go, Python, Java, Jupyter Notebook
- Orchestration: Docker Compose for dependencies
- Extras: Claude Code, zsh shell with plugins
Dev Containers replace manual environment setup with a single, reproducible configuration.
Branch | Description | Build Status |
---|---|---|
go | Go development environment — gopls, golangci-lint, cache, sample server — README | |
java | Java development environment with Spring Boot — README | |
python | Python 3 dev environment with uv, FastAPI, tasks, debug preset — README | |
notebook | Jupyter Notebook / Data Science environment — Jupyter, common DS libs — README |
Branch | Description | Build Status |
---|---|---|
docker-compose | Python (FastAPI) app with PostgreSQL and Redis via Docker Compose — README |
Branch | Description | Build Status |
---|---|---|
claude | Dev container with Claude for VS Code preinstalled — README | |
zsh | zsh with oh-my-zsh and useful plugins — README |
claude and zsh templates can be combined with any of the language environments above for an enhanced development experience.
Each branch provides a complete .devcontainer/
setup and Dockerfile
, tailored for its specific environment.
Common features across branches:
- Lightweight Debian base image
- Non-root
vscode
user (safer default for dev containers) - Preconfigured VS Code settings via
devcontainer.json
Example layout:
.
├── .devcontainer/
│ ├── devcontainer.json # VS Code devcontainer configuration
│ └── Dockerfile # Environment definition
├── README.md # Branch-specific documentation
└── LICENSE # MIT License
git clone https://github.com/s-garg/dev-container-templates.git
cd dev-container-templates
git checkout <branch> # e.g., python, go, docker-compose, etc.
code . # open repo in VS Code
# then run "Dev Containers: Reopen in Container"
💡 Tip: If you have the Dev Containers CLI installed:
devcontainer open
This project is licensed under the MIT License — see the LICENSE file for full details.