A collection of custom dev container Features for enhancing development environments. These Features are hosted on GitHub Container Registry and follow the dev container Feature distribution specification.
This repository contains a collection of dev container Features designed to streamline development workflows. Each Feature can be easily added to your dev container configuration.
Installs the ClickHouse Local CLI, enabling you to run SQL queries on local files without setting up a full ClickHouse server. Perfect for data analysis, ETL development, and testing.
Features:
- Run SQL queries on CSV, TSV, JSON, Parquet, and other file formats
- No server setup required - works entirely locally
- Multiple installation methods (quick binary install or APT package manager)
- Configurable version selection
Usage:
Options:
version(string): ClickHouse version to install. Default:"latest"installMethod(string): Installation method -"quick"(binary) or"apt"(package manager). Default:"quick"
Example:
# Query a CSV file
$ clickhouse-local --query "SELECT * FROM file('data.csv', 'CSV') LIMIT 10"
# Run complex analytics
$ clickhouse-local --query "SELECT user_id, COUNT(*) as visits FROM file('logs.json', 'JSONEachRow') GROUP BY user_id"Provides the Lazydocker TUI for managing Docker containers and docker-compose workloads from the terminal.
Features:
- Single-pane view of containers, images, volumes, and compose services
- Interactive logs and shell access
- Lightweight install with configurable version
Usage:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/proxayfox/devcontainer-features/lazydocker:1": {
"version": "0.24.2"
}
}
}Options:
version(string): Lazydocker version to install. Default:"0.24.2"
Installs AikidoSec's pre-commit hook for scanning secrets, passwords, and API keys before commits. Prevents accidentally committing sensitive information to repositories.
Features:
- Scans staged files for secrets, API keys, passwords, and sensitive data
- Runs automatically on
git commitwhen global hooks are configured - Supports Linux (x86_64, ARM64) and macOS (ARM64)
- Lightweight binary with no runtime dependencies
Usage:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/proxayfox/devcontainer-features/aikido-precommit:1": {}
}
}Options:
version(string): Version of the aikido-local-scanner to install. Default:"v1.0.116"setupGlobalHooks(boolean): Configure git global hooks path. Default:true
Example:
# Manual scan of a repository
$ aikido-local-scanner pre-commit-scan /path/to/repo
# Scan current repository
$ aikido-local-scanner pre-commit-scan "$(git rev-parse --show-toplevel)"This repository follows the standard dev container Features layout:
├── src
│ ├── aikido-precommit
│ │ ├── devcontainer-feature.json
│ │ └── install.sh
│ ├── clickhouse-local
│ │ ├── devcontainer-feature.json
│ │ └── install.sh
│ └── lazydocker
│ ├── devcontainer-feature.json
│ └── install.sh
├── test
│ ├── _global
│ │ └── common-utils.sh
│ ├── aikido-precommit
│ │ └── test.sh
│ ├── clickhouse-local
│ │ └── test.sh
│ └── lazydocker
│ └── test.sh
└── README.md
Each Feature has its own subdirectory under src/ containing:
devcontainer-feature.json- Feature metadata and option definitionsinstall.sh- Installation script executed during container build
When you add a Feature to your devcontainer.json, implementing tools like VS Code Dev Containers or GitHub Codespaces will:
- Read the Feature's metadata from
devcontainer-feature.json - Export the configured options as environment variables
- Execute the
install.shscript during container build time
Options are automatically converted to uppercase environment variables following the option resolution rules.
Add any Feature to your .devcontainer/devcontainer.json:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/proxayfox/devcontainer-features/clickhouse-local:1": {}
}
}{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/proxayfox/devcontainer-features/clickhouse-local:1": {
"version": "23.8",
"installMethod": "apt"
}
}
}Features are individually versioned using semantic versioning (semver) in their devcontainer-feature.json file. See the Feature specification for details.
Features in this repository are automatically published to GitHub Container Registry (GHCR) via GitHub Actions. The workflow is triggered on push to the main branch and publishes each Feature with the namespace:
ghcr.io/proxayfox/devcontainer-features/<feature-name>:<version>
For example:
ghcr.io/proxayfox/devcontainer-features/clickhouse-local:1
By default, GHCR packages are private. To make a Feature publicly accessible:
- Navigate to the package settings:
https://github.com/users/ProxayFox/packages/container/devcontainer-features%2F<featureName>/settings - Change visibility to "public"
- This allows the Feature to be used in any dev container without authentication
Contributions are welcome! To add a new Feature:
- Create a new directory under
src/with your feature name - Add a
devcontainer-feature.jsonwith metadata and options - Create an
install.shscript with installation logic - Add tests under
test/<feature-name>/ - Submit a pull request
- Dev Container Features Specification
- Feature Distribution Specification
- VS Code Dev Containers
- GitHub Codespaces
See LICENSE for details.
{ "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "ghcr.io/proxayfox/devcontainer-features/clickhouse-local:1": { "version": "latest", "installMethod": "quick" } } }