A collection of custom DevContainer features for enhanced development environments within the 40docs platform ecosystem.
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.
| Feature | Description | Version |
|---|---|---|
mkdocs-environment |
Complete MkDocs Python environment with Material theme | |
kubectl-helm-minikube |
Kubernetes development tools (kubectl, Helm, Minikube) | |
azure-cli-persistence |
Azure CLI with persistent authentication | |
tfenv |
Terraform version management | |
tflint |
Terraform linting tool | |
infracost |
Terraform cost estimation |
| Feature | Description | Version |
|---|---|---|
fortidevsec |
FortiDevSec security scanning extension | |
lacework-cli |
FortiCNAPP command line interface | |
lacework-extensible-reporting |
Enhanced security reporting |
| Feature | Description | Version |
|---|---|---|
ollama-client |
Local AI model serving client | |
ollama-persistence |
Ollama with persistent storage | |
autogen-environment |
Microsoft AutoGen framework | |
jupyter-environment |
Jupyter notebooks with conda | |
textgen-environment |
Text generation workloads | |
chunking-environment |
Text processing and chunking | |
memgpt-environment |
MemGPT persistent memory for LLMs | |
openwebui-environment |
Open WebUI for AI models | |
nvidia-cuda |
NVIDIA CUDA GPU support |
| Feature | Description | Version |
|---|---|---|
container-dotfiles |
Personal dotfiles and shell configs | |
oh-my-posh |
PowerShell prompt theming | |
lazygit |
Terminal UI for Git operations | |
continue |
AI-powered code completion | |
vimrc |
Vim configuration setup | |
powerline-fonts |
Enhanced terminal fonts | |
nerd-fonts |
Nerd Fonts collection |
| Feature | Description | Version |
|---|---|---|
postgresql |
PostgreSQL database server | |
draw.io |
Diagramming tool integration | |
speedtest |
Network performance testing | |
git-bfg-cleaner |
Git repository cleanup | |
yq |
YAML/JSON/XML processor | |
lsd |
Enhanced ls command |
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": {}
}
}Many features support configuration options:
{
"features": {
"ghcr.io/40docs/devcontainer-features/postgresql:0": {
"version": "15",
"initDb": true
}
}
}# 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-
Create Feature Directory:
mkdir -p src/my-new-feature cd src/my-new-feature -
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
-
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" } } } -
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"
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
Features are automatically published to GitHub Container Registry when:
- ✅ Changes are pushed to the
mainbranch - ✅ 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>
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
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-new-feature - Develop following the patterns in existing features
- Test locally with
devcontainer features test - Submit a pull request with clear description
- ✅ 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)
- 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
This project is licensed under the terms specified in the LICENSE file.
Part of the 40docs Platform | Documentation | Platform Repository