Skip to content

40docs/devcontainer-features

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevContainer Features

License Registry

A collection of custom DevContainer features for enhanced development environments within the 40docs platform ecosystem.

Overview

This repository provides 40+ custom DevContainer features that extend development containers with specialized tools, runtimes, and configurations. Features are automatically published to GitHub Container Registry and can be used in any DevContainer configuration.

Available Features

🛠️ Core Development Tools

Feature Description Version
mkdocs-environment Complete MkDocs Python environment with Material theme Version
kubectl-helm-minikube Kubernetes development tools (kubectl, Helm, Minikube) Version
azure-cli-persistence Azure CLI with persistent authentication Version
tfenv Terraform version management Version
tflint Terraform linting tool Version
infracost Terraform cost estimation Version

🔒 Security & Compliance

Feature Description Version
fortidevsec FortiDevSec security scanning extension Version
lacework-cli FortiCNAPP command line interface Version
lacework-extensible-reporting Enhanced security reporting Version

🤖 AI/ML Development

Feature Description Version
ollama-client Local AI model serving client Version
ollama-persistence Ollama with persistent storage Version
autogen-environment Microsoft AutoGen framework Version
jupyter-environment Jupyter notebooks with conda Version
textgen-environment Text generation workloads Version
chunking-environment Text processing and chunking Version
memgpt-environment MemGPT persistent memory for LLMs Version
openwebui-environment Open WebUI for AI models Version
nvidia-cuda NVIDIA CUDA GPU support Version

🚀 Development Productivity

Feature Description Version
container-dotfiles Personal dotfiles and shell configs Version
oh-my-posh PowerShell prompt theming Version
lazygit Terminal UI for Git operations Version
continue AI-powered code completion Version
vimrc Vim configuration setup Version
powerline-fonts Enhanced terminal fonts Version
nerd-fonts Nerd Fonts collection Version

🔧 System Utilities

Feature Description Version
postgresql PostgreSQL database server Version
draw.io Diagramming tool integration Version
speedtest Network performance testing Version
git-bfg-cleaner Git repository cleanup Version
yq YAML/JSON/XML processor Version
lsd Enhanced ls command Version

Quick Start

Using Features in DevContainer

Add features to your .devcontainer/devcontainer.json:

{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/40docs/devcontainer-features/mkdocs-environment:0": {},
    "ghcr.io/40docs/devcontainer-features/fortidevsec:23": {},
    "ghcr.io/40docs/devcontainer-features/azure-cli-persistence:0": {}
  }
}

Feature Options

Many features support configuration options:

{
  "features": {
    "ghcr.io/40docs/devcontainer-features/postgresql:0": {
      "version": "15",
      "initDb": true
    }
  }
}

Development

Testing Features Locally

# Test a specific feature
devcontainer features test --features src/mkdocs-environment

# Test with different base image
devcontainer features test --features src/fortidevsec --base-image mcr.microsoft.com/devcontainers/base:debian

# Validate feature metadata
devcontainer features validate --features src/lacework-cli

Creating New Features

  1. Create Feature Directory:

    mkdir -p src/my-new-feature
    cd src/my-new-feature
  2. Required Files:

    # Feature metadata (required)
    touch devcontainer-feature.json
    
    # Installation script (required, must be executable)
    touch install.sh
    chmod +x install.sh
    
    # Documentation (auto-generated)
    touch README.md
  3. Feature Definition (devcontainer-feature.json):

    {
      "id": "my-new-feature",
      "name": "My New Feature",
      "description": "Brief description of the feature",
      "version": "1.0.0",
      "options": {
        "version": {
          "type": "string",
          "default": "latest",
          "description": "Version to install"
        }
      }
    }
  4. Installation Script (install.sh):

    #!/bin/bash
    set -e
    
    # Feature options are available as environment variables
    VERSION=${VERSION:-"latest"}
    
    echo "Installing my-new-feature version ${VERSION}"
    
    # Installation logic here
    # Use ${_REMOTE_USER} for user-specific operations
    
    echo "Feature installation complete"

Feature Structure

src/
├── feature-name/
│   ├── devcontainer-feature.json  # Feature metadata
│   ├── install.sh                 # Installation script
│   ├── README.md                  # Auto-generated docs
│   ├── NOTES.md                   # Additional notes (optional)
│   └── config-files/              # Configuration templates

Publishing

Features are automatically published to GitHub Container Registry when:

  • ✅ Changes are pushed to the main branch
  • ✅ Version numbers are updated in devcontainer-feature.json
  • ✅ All tests pass in CI/CD pipeline

Published features are available at:

ghcr.io/40docs/devcontainer-features/<feature-name>:<version>

Platform Integration

This repository is part of the 40docs Documentation as Code platform:

  • Multi-Repository: Git submodule within the main 40docs ecosystem
  • GitOps Integration: Features used across platform repositories
  • CI/CD: Automated testing and publishing via GitHub Actions
  • Security: All features undergo security scanning and validation

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-new-feature
  3. Develop following the patterns in existing features
  4. Test locally with devcontainer features test
  5. Submit a pull request with clear description

Guidelines

  • ✅ Follow semantic versioning for feature versions
  • ✅ Include comprehensive error handling in install scripts
  • ✅ Use ${_REMOTE_USER} for user-specific operations
  • ✅ Verify checksums for downloaded binaries
  • ✅ Clean up temporary files and caches
  • ✅ Test with multiple base images (Ubuntu, Debian, Alpine)

Support

  • Documentation: Each feature includes auto-generated documentation
  • Issues: Report bugs and feature requests via GitHub Issues
  • Platform: Part of the 40docs ecosystem - see main repository for broader context

License

This project is licensed under the terms specified in the LICENSE file.


Part of the 40docs Platform | Documentation | Platform Repository

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 5

Languages