Docker DTS: Reproducible Dev Env

Docker Template Stacks

View project on GitHub
  🚀 To WSL Stacks
W elcome to the DTS
— A Docker Template Stack Collection
 

MIT License Commercial Services Available

Introduction

Docker Template Stacks offer pre-configured, containerized development environments, enabling developers to leverage Docker for consistent, portable, and isolated workflows.Each stack is tailored to specific development scenarios and includes all necessary tools, dependencies, and a working template project for various programming languages and frameworks

Design principles

Docker Template Stack components are containerized development environments that combine the following features, which apply to all containers listed in the “Available Stack Components”

  • Pre-configured Docker containers with specific programming language toolchains
  • Can be combined to create a network Stack
  • Complete development toolset including compilers, package managers, and utilities
  • Ready-to-use template projects demonstrating best practices and architecture
  • Integrated development environment with VS Code and Dev Containers extension
  • May support GUI output, using WSLg or X11 Containers can be configured to display graphical output on the host.

Features

Docker Container Types

There are two different container types

1. GUI-Forwarding Containers   🖥️
These containers forward their GUI output to the host using X11. They are prefixed with: App-X11-Forward or X11-GUI 1 prefix and are marked with the above desktop icon in this document.

Host requires XLaunch

These containers require the XLaunch program on your Windows host. XLaunch uses the X11 protocol to forward the GUI to your host. Instructions can be found in the How-to document of the relevant containers.


2. Non-GUI-Forwarding Containers
These containers do not support GUI forwarding and do not use the special prefix.


Pluggable Container Architecture 🧩

Pluggable architecture is a core DTS property, allowing multiple containers to work together as a unified system while remaining independently manageable. Stack components with this icon 🧩 have a default pluggable implementation. Additionally, any stack component can be upgraded with a pluggable property.

Pluggable Property Details

How it works

  • Any container can be made pluggable by configuring its docker-compose.yml file with a network section
  • Containers with the 🧩 icon come pre-configured with this setup
  • Containers connect through a shared external Docker network.
  • Each container maintains its own configuration and communicates seamlessly

Benefits

  • Modular deployment - start only the services you need
  • Independent updates - update containers without affecting others
  • Service isolation - each container handles a specific responsibility
  • Scalable architecture - add new services easily

─── ✦ ───

General Quick Setup Process

  1. Prerequisites: Ensure Docker Desktop is installed and running on your system
  2. Clone: Clone the appropriate template stack for your technology
  3. Execute: Run the setup script to build and start your development container
  4. Develop: Open the project in VS Code using Dev Containers and start coding.

Additional setup Information

General Requirements

  • Have Docker Desktop installed and running on your host
    • Docker Desktop images are tested and supported on the following host operating systems:
      • Supported on Windows✅
      • Supported on Linux❓
      • Supported on macOS❓

Target Audience

  • Cross-platform developers wanting consistent environments across Windows, macOS, and Linux
  • Teams requiring identical development environments regardless of host OS
  • Developers starting new projects and wanting to skip initial setup
  • Students and educators needing quick access to configured development environments
  • Anyone who values rapid setup, portability, and completely isolated development environments

Key Features

The stacks feature the following

  • Rapid Development Setup
    • Execute a single setup script to build and configure your development container
    • Automatically provision the Docker container with all required tools and dependencies
    • Launch directly into VS Code with Dev Containers and start coding immediately
    • Time to productivity: Minutes, not hours
  • Completely Isolated Environment
    • Each stack runs in its own Docker container with only relevant tools and dependencies
    • Eliminates version conflicts and dependency issues between different projects
    • Provides identical development environment across different operating systems
    • Zero pollution of your host system
  • Production-Ready Template Projects
    • Start with a fully functional template application that demonstrates best practices
    • Includes proper project structure, configuration files, and Docker setup
    • Template can be immediately built, tested, and deployed using containers
    • Skip the boilerplate and focus on your business logic
  • True Cross-Platform Development
    • Develop applications that run identically on Windows, macOS, and Linux
    • Test your applications in production-like containerized environments
    • Use the same development stack regardless of your host operating system
    • One container, runs everywhere

The Stack Components

The following sections list the available DTS stack components, organized by container type.

Current under Development (improvements):

NET-Dev-Template-Stack ➜ NET dev Docker stack for containers

GUI Forward Project Containers

These containers run Debian OS with X11 GUI forwarding and include a specific development environment, along with a template project to help you get started easily. Most are dedicated to a single development language. However, X11-Dev is a multi-container solution: it consists of a Base Container and multiple Sub Containers, each with its own development environment and templates. With X11-Dev, you can combine several development environments by adding the desired sub-containers.

None GUI Project Containers

These containers run Debian OS without X11 GUI forwarding. They still provide a specific development environment and a template project to help you get started quickly. Most are dedicated to a single development language.

  • STM32
    - A Docker container for microcontroller bare-bone projects, in C and C++
  • React DTS
    - A Docker container for React
  • Rust DTS
    - A Docker container for Rust
  • .NET DTS 🧩 Docker Icon
    - A Docker container with .NET containers and template projects
  • PHP DTS 🔍
    - A PHP template project, different PHP versions, PHPUnit tests, Symfony, and Apache2

Supporting Containers

These containers do not include a development environment. Instead, they provide specific tools designed to integrate into your container stack. These are called Pluggable containers because you can easily add them to your network/stack. By default, they use the external network dev1-net (see Legend).

  • Jenkins 🧩
    - Jenkins CI/CD setup for individual developers working on local projects.
  • Maria DB 🧩
    - Database for individual developers working on local projects.

Docker Desktop support

Although these images were developed on Windows using Docker Desktop, they should work on other operating systems with minor changes (e.g., file path formats). This is currently unverified — optimistic expectation 😄

Legend

  • 🖥️ Container supports X11 forwarded GUI to host.
  • 🧩 The container is by default part of an external network named: dev1-net (may be changed)
  • ⚠️ The container is deprecated and may be removed.
  • 🔍 This container or item needs review.
  • Docker IconRepresents a container with a dedicated configuration (e.g., only for C++ development).
  • Docker IconRepresents a container with multiple configurations (e.g., React, PHP, Node). You can choose which to use by configuring the appropriate sub-container.



License

All repositories are MIT licensed and free to use. For optional commercial support, customization, training, or long-term maintenance, see COMMERCIAL.md.

Footnotes
- Note 1: The new preferred, shorter prefix.


─── ✦ ───
















Maintained by NicoJanE. Generated by GitHub Pages.