Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Versatile C++ development container images with Clang, GCC, and Conan.

License

Notifications You must be signed in to change notification settings

Doner357/cpp-dev-images

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ Development Container Images

License: MIT GitHub last commit

A collection of versatile C++ development container images, built upon the solid doner357/dev-tools-base foundation. These images provide modern C++ compilers and tools in a clean, secure, and reproducible environment.

Core Philosophy

This project adheres to three core principles:

  1. Internal Stability, External Clarity: Dockerfiles pin base images using sha256 digests for deterministic builds, while published images use information-rich tags for clarity.
  2. Layering and Focus: Images are built in a clear hierarchy, with maintenance efforts focused on the full-featured Mainline products.
  3. Clarity as a Feature: Tags are self-documenting, and semantic versioning (MAJOR.MINOR.PATCH) clearly communicates the type and risk of changes.

Image Hierarchy

This project provides Layer 1 (L1) and Layer 2 (L2) images, built on top of the Layer 0 (L0) foundational image.

  • L0: doner357/dev-tools-base (External Project)

    • Provides: A secure Ubuntu base with common development tools (git, cmake, build-essential, etc.).
  • L1: doner357/cpp-compilers-base (This Project)

    • Provides: Everything from L0, plus modern Clang and GCC compilers.
  • L2: doner357/cpp-conan-base (This Project)

    • Provides: Everything from L1, plus the Conan 2 package manager.

Available Images

Product Line Image (on Docker Hub) Source & Details Key Components
Mainline (L1) doner357/cpp-compilers-base Details Clang, GCC
Mainline (L2) doner357/cpp-conan-base Details Clang, GCC, Conan 2
Branch (L1) doner357/cpp-gcc-base Details GCC-only

Tagging and Versioning Strategy

A clear tagging strategy is used to manage stability and updates.

Mainline Products (Actively Maintained)

  1. Immutable Tag (Source of Truth):

    • Format: [M].[m].[p]-[OS]-[Components]
    • Example: 1.2.0-noble-c18g14, 1.2.0-noble-c18g14cn2
  2. Minor Floating Tag:

    • Format: [M].[m]-[OS]-[Components]
    • Example: 1.2-noble-c18g14 (points to the latest patch)
  3. Latest Floating Tag:

    • Format: latest-[OS]-[Components]
    • Example: latest-noble-c18g14

Branch Products (Passively Maintained)

  1. Descriptive Tag:
    • Format: [CompilerVersion]-[OS]
    • Example: 14-noble for doner357/cpp-gcc-base.

Abbreviations

Abbreviation Description
noble Ubuntu 24.04 (Noble Numbat)
c18 Clang Compiler Version 18
g14 GCC Compiler Version 14
cn2 Conan Package Manager Version 2

Quick Start

To get started, pull the flagship image and drop into a shell environment. This example mounts your current working directory into the container's /work directory.

# Pull the latest stable version
docker pull doner357/cpp-conan-base:latest-noble-c18g14cn2

# Run the container with an interactive shell
docker run -it --rm -v "$(pwd):/work" -w /work doner357/cpp-conan-base:latest-noble-c18g14cn2

# Inside the container, you have access to all tools
clang++ --version
g++ --version
conan --version

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Versatile C++ development container images with Clang, GCC, and Conan.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors