Multi-Language Dev Container
A comprehensive development container with support for multiple programming languages and JetBrains IDEs.
Included Languages & Frameworks
C/C++ (CLion) - GCC, G++, Clang, CMake, Ninja, GDB, Valgrind
Rust (RustRover) - Latest stable Rust with rustfmt, clippy, rust-analyzer
Go (GoLand) - Go 1.23.2
.NET (Rider) - .NET 9
Ruby (RubyMine) - Ruby 3.1.6 via rbenv, with Bundler and Rails
Java (IntelliJ IDEA) - OpenJDK 17, Maven, Gradle
JavaScript/TypeScript (WebStorm) - Node.js 20, npm, yarn, pnpm
Python - Python 3 with pip and venv
Additional Tools
Git
Docker-in-Docker
Database clients (PostgreSQL, MySQL, SQLite, Redis)
Build tools (CMake, Make, Ninja)
Text editors (Vim, Nano)
Shell utilities (zsh, tmux, httpie, jq)
Usage
1. Clone or Copy These Files
Copy the .devcontainer folder to your project root:
your-project/
├── .devcontainer/
│ ├── devcontainer.json
│ ├── Dockerfile
│ └── README.md
└── your-project-files...
Copy
2. Open in JetBrains IDE
Open your project in any JetBrains IDE (IntelliJ, RustRover, GoLand, etc.)
The IDE should detect the dev container configuration
Click the notification to open in dev container, or:
Go to Settings → Build, Execution, Deployment → Docker → Dev Containers
Click Create Dev Container and Mount Sources
3. Build Time
The initial build will take 10-20 minutes depending on your internet connection and machine specs. Subsequent builds will be much faster due to Docker layer caching.
IDE-Specific Notes
RustRover
Rust toolchain is installed in /home/devuser/.cargo
Rust Analyzer is pre-installed
Use cargo commands as normal
GoLand
GOROOT: /usr/local/go
GOPATH: /home/devuser/go
Go modules are fully supported
RubyMine
Ruby is managed via rbenv
Default Ruby version: 3.1.6
To install other versions: rbenv install <version>
Rails is pre-installed
Rider
.NET 9 SDK is installed
Use dotnet CLI as normal
NuGet packages work out of the box
CLion
GCC and Clang are both available
CMake, Make, and Ninja build systems
GDB and LLDB debuggers included
IntelliJ IDEA
OpenJDK 17
Maven and Gradle pre-installed
Full Java development support
WebStorm
Node.js 20 LTS
npm, yarn, and pnpm available
TypeScript tooling included
Customization
Change Language Versions
Edit the Dockerfile and modify these ARG values:
ARG GO_VERSION=1.23.2
ARG NODE_VERSION=20
Copy
For Ruby, change the version in the rbenv install command:
&& rbenv install 3.1.6 \
&& rbenv global 3.1.6
Copy
Add More Tools
Add additional packages in the appropriate section of the Dockerfile:
RUN apt-get update && apt-get install -y \
your-package-here \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
Copy
Port Forwarding
By default, these ports are forwarded:
3000 (common web dev)
5000 (.NET)
8080 (general HTTP)
8000 (Django/Python)
4200 (Angular)
Add more in devcontainer.json:
"forwardPorts": [3000, 5000, 8080, 8000, 4200, 9000]
Copy
Reusing Across Projects
Option 1: Shared Dev Container (Recommended)
Build the container once:
cd .devcontainer
docker build -t my-multidev-container .
Copy
In each project's devcontainer.json, reference the image:
{
"name": "My Project",
"image": "my-multidev-container",
"workspaceFolder": "/workspace"
}
Copy
Option 2: Copy to Each Project
Simply copy the .devcontainer folder to each project. Docker will cache layers, so rebuilds are fast.
Option 3: Publish to Container Registry
Build and tag:
docker build -t yourusername/multidev:latest .
docker push yourusername/multidev:latest
Copy
Reference in devcontainer.json:
{
"image": "yourusername/multidev:latest"
}
Copy
Testing Websites
This container is perfect for testing web applications:
Multiple Frameworks : Test Node.js, .NET, Ruby on Rails, Go web servers
Port Forwarding : Access apps from your host browser
Database Clients : Connect to databases for full-stack testing
Docker-in-Docker : Run containerized apps inside the dev container
Example: Testing a Node.js App
# Inside the dev container
cd /workspace
npm init -y
npm install express
node server.js
# Access at http://localhost:3000 from your host machine
Copy
Troubleshooting
Container Build Fails
Check Docker daemon is running
Ensure you have enough disk space (container is ~5-8GB)
Check internet connection for downloading packages
IDE Can't Connect
Restart Docker daemon
Rebuild container: Settings → Dev Containers → Rebuild Container
Check Docker logs for errors
Permission Issues
The container runs as devuser (UID 1000). If you have permission issues:
sudo chown -R devuser:devuser /workspace
Copy
Slow Performance
Allocate more resources to Docker (CPU/Memory)
Use Docker volumes instead of bind mounts for large projects
Enable Docker BuildKit for faster builds
Contributing
Feel free to customize this container for your needs! Consider:
Adding language servers
Including your preferred shell configuration
Adding project-specific tools
Creating language-specific variants
License
Feel free to use and modify as needed for your projects.