{"id":13903253,"url":"https://github.com/devcontainers/features","last_synced_at":"2025-07-18T00:33:56.514Z","repository":{"id":56782705,"uuid":"490359003","full_name":"devcontainers/features","owner":"devcontainers","description":"A collection of Dev Container Features managed by Dev Container spec maintainers. See https://github.com/devcontainers/feature-starter to publish your own","archived":false,"fork":false,"pushed_at":"2024-10-20T00:11:38.000Z","size":5866,"stargazers_count":905,"open_issues_count":190,"forks_count":365,"subscribers_count":25,"default_branch":"main","last_synced_at":"2024-10-20T09:07:53.991Z","etag":null,"topics":["containers","devcontainers"],"latest_commit_sha":null,"homepage":"https://containers.dev/features","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devcontainers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-09T16:20:36.000Z","updated_at":"2024-10-20T04:07:18.000Z","dependencies_parsed_at":"2024-04-22T23:31:17.650Z","dependency_job_id":"b5a20c65-5e0f-4384-bd08-a0e5d12ab57b","html_url":"https://github.com/devcontainers/features","commit_stats":null,"previous_names":[],"tags_count":130,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers%2Ffeatures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers%2Ffeatures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers%2Ffeatures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers%2Ffeatures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devcontainers","download_url":"https://codeload.github.com/devcontainers/features/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226320971,"owners_count":17606385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["containers","devcontainers"],"created_at":"2024-08-06T22:01:55.317Z","updated_at":"2024-11-25T11:31:28.137Z","avatar_url":"https://github.com/devcontainers.png","language":"Shell","funding_links":[],"categories":["containers"],"sub_categories":[],"readme":"# Development Container Features\n\n\u003ctable style=\"width: 100%; border-style: none;\"\u003e\u003ctr\u003e\n\u003ctd style=\"width: 140px; text-align: center;\"\u003e\u003ca href=\"https://github.com/devcontainers\"\u003e\u003cimg width=\"128px\" src=\"https://raw.githubusercontent.com/microsoft/fluentui-system-icons/78c9587b995299d5bfc007a0077773556ecb0994/assets/Cube/SVG/ic_fluent_cube_32_filled.svg\" alt=\"devcontainers organization logo\"/\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\n\u003cstrong\u003eDevelopment Container 'Features'\u003c/strong\u003e\u003cbr /\u003e\n\u003ci\u003eA set of simple and reusable Features. Quickly add a language/tool/CLI to a development container.\n\u003c/td\u003e\n\u003c/tr\u003e\u003c/table\u003e\n\n'Features' are self-contained units of installation code and development container configuration. Features are designed\nto install atop a wide-range of base container images.\n\nMissing a CLI or language in your otherwise _perfect_ container image? Add the relevant Feature to the `features`\nproperty of a [`devcontainer.json`](https://containers.dev/implementors/json_reference/#general-properties). A\n[tool supporting the dev container specification](https://containers.dev/supporting) is required to build a development\ncontainer.\n\nYou may learn about Features at [containers.dev](https://containers.dev/implementors/features/), which is the website for the dev container specification.\n\n## Usage\n\nTo 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.\n\nThe example below installs the `go` and `docker-in-docker` declared in the [`./src`](./src) directory of this\nrepository.\n\nSee the relevant Feature's README for supported options.\n\n```jsonc\n\"name\": \"my-project-devcontainer\",\n\"image\": \"mcr.microsoft.com/devcontainers/base:ubuntu\",  // Any generic, debian-based image.\n\"features\": {\n    \"ghcr.io/devcontainers/features/go:1\": {\n        \"version\": \"1.18\"\n    },\n    \"ghcr.io/devcontainers/features/docker-in-docker:1\": {\n        \"version\": \"latest\",\n        \"moby\": true\n    }\n}\n```\n\nThe `:latest` version annotation is added implicitly if omitted. To pin to a specific package version\n([example](https://github.com/devcontainers/features/pkgs/container/features/go/versions)), append it to the end of the\nFeature. 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.\n\n```jsonc\n\"features\": {\n    \"ghcr.io/devcontainers/features/go:1.0.0\": {\n        \"version\": \"1.18\"\n    }\n}\n```\n\nThe [devcontainer CLI reference implementation](https://github.com/devcontainers/cli) (or a\n[supporting tool](https://containers.dev/supporting)) can be used to build a project's dev container declaring\nFeatures.\n\n```bash\ngit clone \u003cmy-project-with-devcontainer\u003e\ndevcontainer build --workspace-folder \u003cpath-to-my-project-with-devcontainer\u003e\n```\n\n## Repo Structure\n\n```\n.\n├── README.md\n├── src\n│   ├── dotnet\n│   │   ├── devcontainer-feature.json\n│   │   └── install.sh\n│   ├── go\n│   │   ├── devcontainer-feature.json\n│   │   └── install.sh\n|   ├── ...\n│   │   ├── devcontainer-feature.json\n│   │   └── install.sh\n├── test\n│   ├── dotnet\n│   │   └── test.sh\n│   ├── go\n|   |   ├── scenarios.json\n|   |   ├── test_scenario_1.json\n│   |   └── test.sh\n|   ├── ...\n│   │   └── test.sh\n...\n```\n\n-   [`src`](src) - A collection of subfolders, each declaring a Feature. Each subfolder contains at least a\n    `devcontainer-feature.json` and an `install.sh` script.\n-   [`test`](test) - Mirroring `src`, a folder-per-feature with at least a `test.sh` script. The\n    [`devcontainer` CLI](https://github.com/devcontainers/cli) will execute\n    [these tests in CI](https://github.com/devcontainers/features/blob/main/.github/workflows/test-all.yaml).\n\n## Contributions\n\n### Creating your own collection of Features\n\nThe [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.\n\nA 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.\n\nWe 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).\n\n### Contributing to this repository\n\nThis repository will accept improvement and bug fix contributions related to the\n[current set of maintained Features](./src).\n\n🤝 You can read more about how to contribute in [`CONTRIBUTING.md`]. ❤️\n\n[`CONTRIBUTING.md`]: CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcontainers%2Ffeatures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevcontainers%2Ffeatures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcontainers%2Ffeatures/lists"}