Sign inSign up

gamedevmadeeasy/my-multidev

By gamedevmadeeasy

Updated 12 months ago

Debian image set up for using Rust, C#, HTML5, JavaScript, Go, Ruby and Java with Jetbrains IDE.

Image
Languages & frameworks
0

10K+

gamedevmadeeasy/my-multidev repository overview

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...
2. Open in JetBrains IDE
  1. Open your project in any JetBrains IDE (IntelliJ, RustRover, GoLand, etc.)
  2. The IDE should detect the dev container configuration
  3. 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

For Ruby, change the version in the rbenv install command:

&& rbenv install 3.1.6 \
&& rbenv global 3.1.6
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/*
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]

Reusing Across Projects

  1. Build the container once:

    cd .devcontainer
    docker build -t my-multidev-container .
    
  2. In each project's devcontainer.json, reference the image:

    {
      "name": "My Project",
      "image": "my-multidev-container",
      "workspaceFolder": "/workspace"
    }
    
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
  1. Build and tag:

    docker build -t yourusername/multidev:latest .
    docker push yourusername/multidev:latest
    
  2. Reference in devcontainer.json:

    {
      "image": "yourusername/multidev:latest"
    }
    

Testing Websites

This container is perfect for testing web applications:

  1. Multiple Frameworks: Test Node.js, .NET, Ruby on Rails, Go web servers
  2. Port Forwarding: Access apps from your host browser
  3. Database Clients: Connect to databases for full-stack testing
  4. 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

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
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.

Tag summary

Content type

Image

Digest

sha256:539851740

Size

1.6 GB

Last updated

12 months ago

docker pull gamedevmadeeasy/my-multidev