A collection of Dev Container Features managed by Dev Container spec maintainers. See https://github.com/devcontainers/feature-starter to publish your own
Find a file
2022-06-22 18:51:39 +00:00
.github no-ci - update action (generate features collection artifact) 2022-06-22 18:51:23 +00:00
.vscode Update launch.json 2022-05-12 20:49:10 -04:00
lib Repo README (#53) 2022-06-22 14:16:45 -04:00
src Automated documentation update 2022-06-22 18:25:18 +00:00
test Revert "add gradle feature" 2022-06-15 19:17:27 +00:00
test-scenarios Merge JupyterLab feature into Python feature (#40) 2022-06-08 11:19:31 -07:00
v1 Revert "add gradle feature" 2022-06-15 19:17:27 +00:00
.devcontainer.json CI Ignore 2022-06-13 20:06:39 -04:00
.gitignore add v2 action 2022-06-03 14:49:26 +00:00
devcontainers-cli-0.3.0.tgz devcontainer cli with v2 changes rebased onto scenario changes 2022-06-03 17:55:12 +00:00
README.md no-ci : Edit readme 2022-06-22 14:18:52 -04:00

Development Container Features

devcontainers organization logo Development Container 'Features'
A set of simple and reusable 'features'. Quickly add a language/tool/CLI to a development container.

'Features' are self-contained units of installation code and development container configuration. Features are designed to install atop a wide-range of base container images (this repo focuses on debian based images).

Missing a CLI or language in your otherwise perfect container image? Add the relevant 'feature' to the features property of a devcontainer.json.

The devcontainer CLI, implemented by the VS Code Remote-Containers extension and Github Codespaces, is required to process a devcontainer.json and build a container images declaring 'features'.

Development container 'features' are a proposed addition to the development container specification. Please note that 'features' are in preview and subject to breaking changes.

Repo Structure

.
├── lib
│   └── utils.sh
├── README.md
├── src
│   ├── dotnet
│   │   ├── feature.json
│   │   └── install.sh
│   ├── go
│   │   ├── feature.json
│   │   └── install.sh
|   ├── ...
│   │   ├── feature.json
│   │   └── install.sh
├── test
│   ├── dotnet
│   │   └── test.sh
│   └── go
│   |   └── test.sh
|   ├── ...
│   │   ├── feature.json
│   │   └── install.sh
├── test-scenarios
│   ├── install_jupyterlab.sh
│   ├── install_python_twice.sh
|   ├── ...
│   └── scenarios.json
  • lib - A collection of tools, scripts, and shared configuration used generally by this repo's features.
  • src - A collection of subfolders, each declaring a feature. Each subfolder contains at least a feature.json and the appropriately declared install script.
  • test - Mirroring src, a folder-per-feature with at least a test.sh script. The devcontainer CLI will execute these tests in CI.
  • test-scenarios - More complex scenarios involving a set of features from this repo. The devcontainer CLI will execute these tests in CI.

Usage

To reference a feature from this repository, add the desired features to a devcontainer.json.

The example below installs the go and docker-in-docker declared in the ./src directory of this repository.

See the relevant feature's README for supported options.

"image": "mcr.microsoft.com/devcontainers/base:ubuntu",  // Any generic, debian-based image.
features: {
    "devcontainers/features/go@latest": {
        "version": "1.18"
    },
    "devcontainers/features/docker-in-docker@latest": {
        "version": "latest",
        "moby": true
    }
}

The @latest version annotation is added implicitly if omitted. To pin to a specific release tag, append it to the end of the feature.

features: {
    "devcontainers/features/go@v0.0.2": {
        "version": "1.18"
    },

Contributions

Contibuting to this repository

This repository will accept improvement and bug fix contributions related to the current set of maintained features.

Creating your own collection of features

More information your creating own set of features will be posted soon.