Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devcontainers/features
A collection of Dev Container Features managed by Dev Container spec maintainers. See https://github.com/devcontainers/feature-starter to publish your own
https://github.com/devcontainers/features
containers devcontainers
Last synced: 3 months ago
JSON representation
A collection of Dev Container Features managed by Dev Container spec maintainers. See https://github.com/devcontainers/feature-starter to publish your own
- Host: GitHub
- URL: https://github.com/devcontainers/features
- Owner: devcontainers
- License: mit
- Created: 2022-05-09T16:20:36.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-29T17:54:15.000Z (4 months ago)
- Last Synced: 2024-07-29T22:57:40.960Z (3 months ago)
- Topics: containers, devcontainers
- Language: Shell
- Homepage: https://containers.dev/features
- Size: 5.43 MB
- Stars: 829
- Watchers: 22
- Forks: 327
- Open Issues: 179
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Development Container Features
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.Missing a CLI or language in your otherwise _perfect_ container image? Add the relevant Feature to the `features`
property of a [`devcontainer.json`](https://containers.dev/implementors/json_reference/#general-properties). A
[tool supporting the dev container specification](https://containers.dev/supporting) is required to build a development
container.You may learn about Features at [containers.dev](https://containers.dev/implementors/features/), which is the website for the dev container specification.
## 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`](./src) directory of this
repository.See the relevant Feature's README for supported options.
```jsonc
"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](https://github.com/devcontainers/features/pkgs/container/features/go/versions)), 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.```jsonc
"features": {
"ghcr.io/devcontainers/features/go:1.0.0": {
"version": "1.18"
}
}
```The [devcontainer CLI reference implementation](https://github.com/devcontainers/cli) (or a
[supporting tool](https://containers.dev/supporting)) can be used to build a project's dev container declaring
Features.```bash
git clone
devcontainer build --workspace-folder
```## 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
| | ├── scenarios.json
| | ├── test_scenario_1.json
│ | └── test.sh
| ├── ...
│ │ └── test.sh
...
```- [`src`](src) - A collection of subfolders, each declaring a Feature. Each subfolder contains at least a
`devcontainer-feature.json` and an `install.sh` script.
- [`test`](test) - Mirroring `src`, a folder-per-feature with at least a `test.sh` script. The
[`devcontainer` CLI](https://github.com/devcontainers/cli) will execute
[these tests in CI](https://github.com/devcontainers/features/blob/main/.github/workflows/test-all.yaml).## Contributions
### Creating your own collection of Features
The [Feature distribution specification](https://containers.dev/implementors/features-distribution/) outlines a pattern for community members and organizations to self-author Features in repositories they control.
A template repo [`devcontainers/feature-template`](https://github.com/devcontainers/feature-template) and [GitHub Action](https://github.com/devcontainers/action) are available to help bootstrap self-authored Features.
We are eager to hear your feedback on self-authoring! Please provide comments and feedback on [spec issue #70](https://github.com/devcontainers/spec/issues/70).
### Contributing to this repository
This repository will accept improvement and bug fix contributions related to the
[current set of maintained Features](./src).🤝 You can read more about how to contribute in [`CONTRIBUTING.md`]. ❤️
[`CONTRIBUTING.md`]: CONTRIBUTING.md