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
Josh Spicer 471e9e800d
sshd: always run initial apt-get (#96)
* sshd: always run initial apt-get

* just run apt-update

* move

* remove whitespace
2022-08-15 16:01:19 +00:00
.github Update generate-docs Action with OCI syntax (#74) 2022-08-09 14:32:59 -04:00
.vscode Update launch.json 2022-05-12 20:49:10 -04:00
src sshd: always run initial apt-get (#96) 2022-08-15 16:01:19 +00:00
test Rename feature: 'common' to 'common-utils' (#79) 2022-08-05 18:11:46 +00:00
test-scenarios Options: Follow camelCase (#89) 2022-08-11 18:37:10 +00:00
.gitignore add v2 action 2022-06-03 14:49:26 +00:00
CODEOWNERS Adds CODEOWNER (#69) 2022-07-27 21:31:23 +00:00
LICENSE Create LICENSE (#54) 2022-06-29 12:59:43 -04:00
README.md Update README.md 2022-08-12 11:31:40 -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. A tool supporting the dev container specification is required to build a development container.

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

Once the proposed specification is accepted, implementation details will be published at https://containers.dev.

Usage

To reference a feature from this repository, add the desired features to a devcontainer.json. Each feature has a README.md that shows how to reference the feature and which options are available for that feature.

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.

"name": "my-project-devcontainer",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",  // Any generic, debian-based image.
"features": {
    "ghcr.io/devcontainers/features/go:1": {
        "version": "1.18"
    },
    "ghcr.io/devcontainers/features/docker-in-docker:1": {
        "version": "latest",
        "moby": true
    }
}

The :latest version annotation is added implicitly if omitted. To pin to a specific package version (example), append it to the end of the feature. Features follow semantic versioning conventions, so you can pin to a major version :1, minor version :1.0, or patch version :1.0.0 by specifying the appropriate label.

"features": {
    "ghcr.io/devcontainers/features/go:1.0.0": {
        "version": "1.18"
    }
}

The devcontainer CLI reference implementation (or a supporting tool) can be used to build a project's dev container declaring 'features'.

git clone <my-project-with-devcontainer>
devcontainer build --workspace-folder <path-to-my-project-with-devcontainer>

Repo Structure

.
├── README.md
├── src
│   ├── dotnet
│   │   ├── devcontainer-feature.json
│   │   └── install.sh
│   ├── go
│   │   ├── devcontainer-feature.json
│   │   └── install.sh
|   ├── ...
│   │   ├── devcontainer-feature.json
│   │   └── install.sh
├── test
│   ├── dotnet
│   │   └── test.sh
│   └── go
│   |   └── test.sh
|   ├── ...
│   │   └── test.sh
├── test-scenarios
│   ├── install_jupyterlab.sh
│   ├── install_python_twice.sh
|   ├── ...
│   └── scenarios.json

Contributions

Creating your own collection of features

Please see the proposed specification on how to start to author and distribute your own features.

We're excited for you to create features! Our team is actively iterating on tools and examples to help members of the community author their own dev container features. If you have any feedback along the way, please let us know in the specification repo's issues on features or feature distribution.

Contributing to this repository

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