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"This repository follows the standard dev container Features layout:
├── src
│ └── clickhouse-local
│ ├── devcontainer-feature.json
│ └── install.sh
├── test
│ ├── _global
│ │ └── common-utils.sh
│ └── clickhouse-local
│ └── 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" } } }