From 86db8aa3f0d5365b350519736d956fa6bfc064dc Mon Sep 17 00:00:00 2001
From: Shyim
Date: Thu, 10 Nov 2022 17:22:16 +0100
Subject: [PATCH 001/333] add @shyim collection to index (#73)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 3feb8b5c..ee238ada 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -88,3 +88,8 @@
contact: https://github.com/NicoVIII/devcontainer-features/issues
repository: https://github.com/NicoVIII/devcontainer-features
ociReference: ghcr.io/NicoVIII/devcontainer-features
+- name: PHP Features
+ maintainer: Shyim
+ contact: https://github.com/shyim/devcontainers-features/issues
+ repository: https://github.com/shyim/devcontainers-features
+ ociReference: ghcr.io/shyim/devcontainers-features
From 197fa3e40275bf02e27e7851f65747ca2ced97f0 Mon Sep 17 00:00:00 2001
From: Enrico Secondulfo
Date: Mon, 14 Nov 2022 19:42:45 +0100
Subject: [PATCH 002/333] add devcontainer features into collection-index (#76)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index ee238ada..7f18e849 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -93,3 +93,8 @@
contact: https://github.com/shyim/devcontainers-features/issues
repository: https://github.com/shyim/devcontainers-features
ociReference: ghcr.io/shyim/devcontainers-features
+- name: Assorted Features
+ maintainer: Enrico Secondulfo
+ contact: https://github.com/enricosecondulfo/devcontainer-features/issues
+ repository: https://github.com/enricosecondulfo/devcontainer-features
+ ociReference: ghcr.io/enricosecondulfo/devcontainer-features
From 2d8cf99d8aafc1f6b1b3b6941076865198e735b4 Mon Sep 17 00:00:00 2001
From: tlc-sundown
Date: Mon, 14 Nov 2022 19:44:56 +0100
Subject: [PATCH 003/333] add @tlc-sundown collection to index (#75)
# msquic (msquic)
A feature to install the MsQuic library
## Example Usage
```json
"features": {
"ghcr.io/tlc-sundown/devcontainers-features/msquic:1": {
"version": "latest"
}
}
```
## Options
| Options Id | Description | Type | Default Value |
|-----|-----|-----|-----|
| version | Select or enter an MsQuic library version | string | latest |
| verbose | Enable verbose mode during install | boolean | false |
## References
- HTTP/3 with ASP.NET Core - see requirements for [Kestrel web server](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/http3?view=aspnetcore-7.0).
- QUIC protocol implementation - see [MsQuic on github](https://github.com/microsoft/msquic)
- configuring the Microsoft repository on a Linux system - see [Linux Software Repository for Microsoft Products](https://learn.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software)
Co-authored-by: Josh Spicer
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 7f18e849..4f14eeab 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -93,6 +93,11 @@
contact: https://github.com/shyim/devcontainers-features/issues
repository: https://github.com/shyim/devcontainers-features
ociReference: ghcr.io/shyim/devcontainers-features
+- name: libmsquic feature for HTTP/3 support
+ maintainer: tlc-sundown
+ contact: https://github.com/tlc-sundown/devcontainers-features/issues
+ repository: https://github.com/tlc-sundown/devcontainers-features
+ ociReference: ghcr.io/tlc-sundown/devcontainers-features
- name: Assorted Features
maintainer: Enrico Secondulfo
contact: https://github.com/enricosecondulfo/devcontainer-features/issues
From 09354e921186e428745e0e1a9e4d6e91dca034e7 Mon Sep 17 00:00:00 2001
From: JP Ungaretti <19893438+jungaretti@users.noreply.github.com>
Date: Mon, 14 Nov 2022 10:46:39 -0800
Subject: [PATCH 004/333] Add to features index (#74)
Co-authored-by: Josh Spicer
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 4f14eeab..b688b1ad 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -93,6 +93,11 @@
contact: https://github.com/shyim/devcontainers-features/issues
repository: https://github.com/shyim/devcontainers-features
ociReference: ghcr.io/shyim/devcontainers-features
+- name: Fun Features
+ maintainer: jungaretti
+ contact: https://github.com/jungaretti/features/issues
+ repository: https://github.com/jungaretti/features
+ ociReference: ghcr.io/jungaretti/features
- name: libmsquic feature for HTTP/3 support
maintainer: tlc-sundown
contact: https://github.com/tlc-sundown/devcontainers-features/issues
From 263b392349c5d110e97c7f66893b7691aeeaa105 Mon Sep 17 00:00:00 2001
From: Lars Gyrup Brink Nielsen
Date: Tue, 15 Nov 2022 17:21:07 +0100
Subject: [PATCH 005/333] fix: correct typo (#77)
---
_implementors/spec.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/_implementors/spec.md b/_implementors/spec.md
index d27cc70e..c574465a 100644
--- a/_implementors/spec.md
+++ b/_implementors/spec.md
@@ -178,7 +178,7 @@ See [`workspaceMount` and `workspaceFolder`](../json_reference#image-specific) f
Users control the permissions of applications executed in the containers, allowing the developer to control them. The specification takes into account two types of user definitions:
-* **Container User**: The user that will be used for all operations that run inside a container. This concept is native to containers. It may be set in the container image, using the `continerUser` property for **image** and **dockerfile** scenarios, or using an orchestratric specific property like `user` property in Docker Compose files.
+* **Container User**: The user that will be used for all operations that run inside a container. This concept is native to containers. It may be set in the container image, using the `containerUser` property for **image** and **dockerfile** scenarios, or using an orchestratric specific property like `user` property in Docker Compose files.
* **Remote User**: Used to run the [lifecycle](#lifecycle) scripts inside the container. This is also the user tools and editors that connect to the container should use to run their processes. This concept is not native to containers. Set using the `remoteEnv` property in all cases and defaults to the container user.
This separation allows the ENTRYPOINT for the image to execute with different permissions than the developer and allows for developers to switch users without recreating their containers.
@@ -292,4 +292,4 @@ Each entry in the `object` will be run in parallel during that lifecycle step.
# Definitions
#### Project Workspace Folder
-The **project workspace folder** is where an implementing tool should begin to search for `devcontainer.json` files. If the target project on disk is using git, the **project workspace folder** is typically the root of the git repository.
\ No newline at end of file
+The **project workspace folder** is where an implementing tool should begin to search for `devcontainer.json` files. If the target project on disk is using git, the **project workspace folder** is typically the root of the git repository.
From 2c42c31ae8c333dcc22025461fe0063840dcf4b1 Mon Sep 17 00:00:00 2001
From: Christian Nuss
Date: Fri, 18 Nov 2022 09:30:55 -0800
Subject: [PATCH 006/333] add saml-to/devcontainer-features (#78)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index b688b1ad..02e798f0 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -108,3 +108,8 @@
contact: https://github.com/enricosecondulfo/devcontainer-features/issues
repository: https://github.com/enricosecondulfo/devcontainer-features
ociReference: ghcr.io/enricosecondulfo/devcontainer-features
+- name: SAML.to Development Container Features
+ maintainer: saml-to
+ contact: https://github.com/saml-to/devcontainer-features/issues
+ repository: https://github.com/saml-to/devcontainer-features
+ ociReference: ghcr.io/saml-to/devcontainer-features
From 1ab097325ed1d41f27e0c0379c6512c5a2489348 Mon Sep 17 00:00:00 2001
From: JP Ungaretti <19893438+jungaretti@users.noreply.github.com>
Date: Mon, 21 Nov 2022 13:05:31 -0500
Subject: [PATCH 007/333] Fix broken link on spec page (#82)
* Fix broken link in spec
* Missing dot
---
_implementors/spec.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_implementors/spec.md b/_implementors/spec.md
index c574465a..262b01e3 100644
--- a/_implementors/spec.md
+++ b/_implementors/spec.md
@@ -147,7 +147,7 @@ A complete list of available metadata properties and their purposes can be found
Development container "Features" are self-contained, shareable units of installation code and development container configuration. The name comes from the idea that referencing one of them allows you to quickly and easily add more tooling, runtime, or library "features" into your development container for you or your collaborators to use.
-They are applied to container images as a secondary build step and can affect a number of dev container configuration settings. See the [features documentation](./features.md) for more details.
+They are applied to container images as a secondary build step and can affect a number of dev container configuration settings. See the [features documentation](../features) for more details.
## Environment variables
From e91a9910f7a63ac26765396147a7f2d731852e20 Mon Sep 17 00:00:00 2001
From: Ricardo Machado
Date: Mon, 21 Nov 2022 19:29:05 +0100
Subject: [PATCH 008/333] add cloud-native feature (#81)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 02e798f0..af279000 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -113,3 +113,8 @@
contact: https://github.com/saml-to/devcontainer-features/issues
repository: https://github.com/saml-to/devcontainer-features
ociReference: ghcr.io/saml-to/devcontainer-features
+- name: Cloud Native development environment tools
+ maintainer: rjfmachado
+ contact: https://github.com/rjfmachado/devcontainer-features/issues
+ repository: https://github.com/rjfmachado/devcontainer-features
+ ociReference: ghcr.io/rjfmachado/devcontainer-features
From 58c1a70c9381e7684ccb9d6222b8b300a76213ce Mon Sep 17 00:00:00 2001
From: Josh Spicer
Date: Tue, 22 Nov 2022 11:59:47 -0800
Subject: [PATCH 009/333] Add a HowTo blog (#79)
* create a blog
* fix hyperlinks
* review feedback
* rename to guides
---
_config.yml | 4 +--
_includes/topnav.html | 5 ++-
_layouts/post.html | 8 +++++
.../2022-11-01-author-a-feature.md | 31 +++++++++----------
guides.html | 13 ++++++++
5 files changed, 42 insertions(+), 19 deletions(-)
create mode 100644 _layouts/post.html
rename _implementors/create-feature.md => _posts/2022-11-01-author-a-feature.md (68%)
create mode 100644 guides.html
diff --git a/_config.yml b/_config.yml
index be76bda5..855811df 100644
--- a/_config.yml
+++ b/_config.yml
@@ -33,7 +33,7 @@ defaults:
type: posts
values:
layout: post
- sectionid: blog
+ sectionid: guide
- scope:
path: _docs
@@ -56,7 +56,7 @@ collections:
permalink: /:collection/:path/
output: true
posts:
- permalink: /blog/:year/:month/:day/:title/
+ permalink: /guide/:title
output: true
implementors:
permalink: /:collection/:path/
diff --git a/_includes/topnav.html b/_includes/topnav.html
index 86d497f4..abff8839 100644
--- a/_includes/topnav.html
+++ b/_includes/topnav.html
@@ -18,7 +18,7 @@
\ No newline at end of file
diff --git a/_implementors/create-feature.md b/_posts/2022-11-01-author-a-feature.md
similarity index 68%
rename from _implementors/create-feature.md
rename to _posts/2022-11-01-author-a-feature.md
index a5882250..dabcae96 100644
--- a/_implementors/create-feature.md
+++ b/_posts/2022-11-01-author-a-feature.md
@@ -1,14 +1,13 @@
---
-layout: implementors
-title: "Create a Feature"
-shortTitle: "Create a Feature"
-author: Microsoft
-index: 7
+layout: post
+title: "Authoring a Dev Container Feature"
+author: "@joshspicer"
+authorUrl: https://github.com/joshspicer
---
-Development container ['Features'](../features) are self-contained, shareable units of installation code and development container configuration. We [define a pattern](../features-distribution) for authoring and self-publishing Features.
+Development container ['Features'](/features) are self-contained, shareable units of installation code and development container configuration. We [define a pattern](/implementors/features-distribution) for authoring and self-publishing Features.
-In this document, we'll outline a "quickstart" to help you get up-and-running with creating and sharing your first Feature. You may review an example along with guidance in our [devcontainers/feature-template](https://github.com/devcontainers/feature-template) repo as well.
+In this document, we'll outline a "quickstart" to help you get up-and-running with creating and sharing your first Feature. You may review an example along with guidance in our [devcontainers/feature-starter](https://github.com/devcontainers/feature-starter) repo as well.
> Note: While this walkthrough will illustrate the use of GitHub and the GitHub Container Registry, you can use your own source control system and publish to any [OCI Artifact supporting](https://oras.land/implementors/#registries-supporting-oci-artifacts) container registry instead.
@@ -16,13 +15,13 @@ In this document, we'll outline a "quickstart" to help you get up-and-running wi
Start off by creating a repository to host your Feature. In this guide, we'll use a public GitHub repository.
-For the simplest getting started experience, you may use our example [feature-template](https://github.com/devcontainers/feature-template) repo. You may select the green `Use this template` button on the repo's page.
+For the simplest getting started experience, you may use our example [feature-starter](https://github.com/devcontainers/feature-starter) repo. You may select the green `Use this template` button on the repo's page.
You may also [create your own repo on GitHub](https://docs.github.com/en/get-started/quickstart/create-a-repo) if you'd prefer.
## Create a folder
-Once you've forked the feature-template repo (or created your own), you'll want to create a folder for your Feature. You may create one within the [`src`](https://github.com/devcontainers/feature-template/tree/main/src) folder.
+Once you've forked the feature-starter repo (or created your own), you'll want to create a folder for your Feature. You may create one within the [`src`](https://github.com/devcontainers/feature-starter/tree/main/src) folder.
If you'd like to create multiple Features, you may add multiple folders within `src`.
@@ -30,11 +29,11 @@ If you'd like to create multiple Features, you may add multiple folders within `
At a minimum, a Feature will include a `devcontainer-feature.json` and an `install.sh` entrypoint script.
-There are many possible properties for `devcontainer-feature.json`, which you may review in the [Features spec](../features#devcontainer-feature-json-properties).
+There are many possible properties for `devcontainer-feature.json`, which you may review in the [Features spec](/features#devcontainer-feature-json-properties).
Below is a hello world example `devcontainer-feature.json` and `install.sh`. You may review the [devcontainers/features](https://github.com/devcontainers/features/blob/main/src) repo for more examples.
-[devcontainer-feature.json](https://github.com/devcontainers/feature-template/blob/main/src/hello/devcontainer-feature.json):
+[devcontainer-feature.json](https://github.com/devcontainers/feature-starter/blob/main/src/hello/devcontainer-feature.json):
```json
{
@@ -58,7 +57,7 @@ Below is a hello world example `devcontainer-feature.json` and `install.sh`. You
}
```
-[install.sh](https://github.com/devcontainers/feature-template/blob/main/src/hello/install.sh):
+[install.sh](https://github.com/devcontainers/feature-starter/blob/main/src/hello/install.sh):
```bash
#!/bin/sh
@@ -82,11 +81,11 @@ chmod +x /usr/local/bin/hello
## Publishing
-The feature-template repo contains a GitHub Action [workflow](https://github.com/devcontainers/feature-template/blob/main/.github/workflows/release.yaml) that will publish each feature to GHCR. By default, each feature will be prefixed with the `` namespace. Using the hello world example from above, it can be referenced in a `devcontainer.json` with: `ghcr.io/devcontainers/feature-template/color:1`.
+The `feature-starter` repo contains a GitHub Action [workflow](https://github.com/devcontainers/feature-starter/blob/main/.github/workflows/release.yaml) that will publish each feature to GHCR. By default, each feature will be prefixed with the `` namespace. Using the hello world example from above, it can be referenced in a `devcontainer.json` with: `ghcr.io/devcontainers/feature-starter/color:1`.
> Note: You can use the `devcontainer features publish` command from the [Dev Container CLI](https://github.com/devcontainers/cli) if you are not using GitHub Actions.
-The provided GitHub Action will also publish a third "metadata" package with just the namespace, eg: `ghcr.io/devcontainers/feature-template`, which is known as the Feature collection namespace.
+The provided GitHub Action will also publish a third "metadata" package with just the namespace, eg: `ghcr.io/devcontainers/feature-starter. This is useful for supporting tools to [crawl](#add-to-index) metadata about available Features in the collection without downloading _all the Features individually_.
By default, GHCR packages are marked as private. To stay within the free tier, Features need to be marked as public.
@@ -100,10 +99,10 @@ https://github.com/users//packages/container/%2F/setti
## Adding Features to the Index
-If you'd like your Features to appear in our [public index](https://containers.dev/features) so that other community members can find them, you can do the following:
+If you'd like your Features to appear in our [public index](/features) so that other community members can find them, you can do the following:
* Go to [github.com/devcontainers/devcontainers.github.io](github.com/devcontainers/devcontainers.github.io), which is the GitHub repo backing [containers.dev](https://containers.dev/)
* Open a PR to modify the [collection-index.yml](https://github.com/devcontainers/devcontainers.github.io/blob/gh-pages/_data/collection-index.yml) file
* Features housed in other OCI Artifact container registries can be included as long as they can be downloaded without a login.
-Feature collections are scanned to populate a Feature index on the [containers.dev site](../../features) and allow them to appear in Dev Container creation UX in [supporting tools](https://containers.dev/supporting) like [VS Code Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) and [GitHub Codespaces](https://github.com/features/codespaces).
\ No newline at end of file
+Feature collections are scanned to populate a Feature index on the [containers.dev site](/features) and allow them to appear in Dev Container creation UX in [supporting tools](https://containers.dev/supporting) like [VS Code Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) and [GitHub Codespaces](https://github.com/features/codespaces).
\ No newline at end of file
diff --git a/guides.html b/guides.html
new file mode 100644
index 00000000..6234d1d0
--- /dev/null
+++ b/guides.html
@@ -0,0 +1,13 @@
+---
+layout: singlePage
+title: Dev Container Guides
+---
+
+{% for post in site.posts %}
+
+{% endfor %}
From 502531d53467bef0a32b28228bf1ca2a79c37eb4 Mon Sep 17 00:00:00 2001
From: Luke Wiwatowski
Date: Thu, 24 Nov 2022 03:38:24 +1100
Subject: [PATCH 010/333] Add shellcheck feature to the index (#85)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index af279000..a7accec9 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -118,3 +118,8 @@
contact: https://github.com/rjfmachado/devcontainer-features/issues
repository: https://github.com/rjfmachado/devcontainer-features
ociReference: ghcr.io/rjfmachado/devcontainer-features
+- name: Shellcheck
+ maintainer: lukewiwa
+ contact: https://github.com/lukewiwa/features/issues
+ repository: https://github.com/lukewiwa/features
+ ociReference: ghcr.io/lukewiwa/features
From dfc1475c576d963ec4dc6c2f02a37058ca027221 Mon Sep 17 00:00:00 2001
From: Luke Wiwatowski
Date: Fri, 25 Nov 2022 03:44:55 +1100
Subject: [PATCH 011/333] Fix spelling issue in features.md (#86)
---
_implementors/features.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_implementors/features.md b/_implementors/features.md
index ae1994a8..199b8a3d 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -232,7 +232,7 @@ The `install.sh` script for each Feature should be executed as `root` during a c
To ensure that the appropriate shell is used, the execute bit should be set on `install.sh` and the file invoked directly (e.g. `chmod +x install.sh && ./install.sh`).
-> **Note:** It is recommended that Feature authers write `install.sh` using a shell available by default in their supported distributions (e.g., `bash` in Debian/Ubuntu or Fedora, `sh` in Alpine). In the event a different shell is required (e.g., `fish`), `install.sh` can be used to boostrap by checking for the presence of the desired shell, installing it if needed, and then invoking a secondary script using the shell.
+> **Note:** It is recommended that Feature authors write `install.sh` using a shell available by default in their supported distributions (e.g., `bash` in Debian/Ubuntu or Fedora, `sh` in Alpine). In the event a different shell is required (e.g., `fish`), `install.sh` can be used to boostrap by checking for the presence of the desired shell, installing it if needed, and then invoking a secondary script using the shell.
>
> The `install.sh` file can similarly be used to bootstrap something written in a compiled language like Go. Given the increasing likelihood that a Feature needs to work on both x86_64 and arm64-based devices (e.g., Apple Silicon Macs), `install.sh` can detect the current architecture (e.g., using something like `uname -m` or `dpkg --print-architecture`), and then invoke the right executable for that architecture.
From 793ae796a72ac41d8dcb06d583d250cc4e93b580 Mon Sep 17 00:00:00 2001
From: Josh Abernathy
Date: Thu, 24 Nov 2022 11:47:05 -0500
Subject: [PATCH 012/333] Update docs for lifecycle command changes (#84)
* Update docs for lifecycle command changes
* Fix up the object types
* Fix up formatting
---
_implementors/json_schema.md | 60 +++++++++++++++++++++++++++++++++---
_implementors/spec.md | 10 +++---
2 files changed, 60 insertions(+), 10 deletions(-)
diff --git a/_implementors/json_schema.md b/_implementors/json_schema.md
index 7a3ca0c9..9e83ed6a 100644
--- a/_implementors/json_schema.md
+++ b/_implementors/json_schema.md
@@ -206,51 +206,101 @@ You may review the current devcontainer.json schemas in the spec repo, which inc
"onCreateCommand": {
"type": [
"string",
- "array"
+ "array",
+ "object"
],
"description": "A command to run when creating the container. This command is run after \"initializeCommand\" and before \"updateContentCommand\". If this is a single string, it will be run in a shell. If this is an array of strings, it will be run as a single command without shell.",
"items": {
"type": "string"
+ },
+ "additionalProperties": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
}
},
"updateContentCommand": {
"type": [
"string",
- "array"
+ "array",
+ "object"
],
"description": "A command to run when creating the container and rerun when the workspace content was updated while creating the container. This command is run after \"onCreateCommand\" and before \"postCreateCommand\". If this is a single string, it will be run in a shell. If this is an array of strings, it will be run as a single command without shell.",
"items": {
"type": "string"
+ },
+ "additionalProperties": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
}
},
"postCreateCommand": {
"type": [
"string",
- "array"
+ "array",
+ "object"
],
"description": "A command to run after creating the container. This command is run after \"updateContentCommand\" and before \"postStartCommand\". If this is a single string, it will be run in a shell. If this is an array of strings, it will be run as a single command without shell.",
"items": {
"type": "string"
+ },
+ "additionalProperties": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
}
},
"postStartCommand": {
"type": [
"string",
- "array"
+ "array",
+ "object"
],
"description": "A command to run after starting the container. This command is run after \"postCreateCommand\" and before \"postAttachCommand\". If this is a single string, it will be run in a shell. If this is an array of strings, it will be run as a single command without shell.",
"items": {
"type": "string"
+ },
+ "additionalProperties": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
}
},
"postAttachCommand": {
"type": [
"string",
- "array"
+ "array",
+ "object"
],
"description": "A command to run when attaching to the container. This command is run after \"postStartCommand\". If this is a single string, it will be run in a shell. If this is an array of strings, it will be run as a single command without shell.",
"items": {
"type": "string"
+ },
+ "additionalProperties": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
}
},
"waitFor": {
diff --git a/_implementors/spec.md b/_implementors/spec.md
index 262b01e3..dc72cfa5 100644
--- a/_implementors/spec.md
+++ b/_implementors/spec.md
@@ -73,11 +73,11 @@ To apply the metadata together with a user's devcontainer.json at runtime the fo
| `securityOpt` | `string[]` | Union of all `securityOpt` arrays without duplicates. | x | x |
| `entrypoint` | `string` | Collected list of all entrypoints. | | x |
| `mounts` | `(string \| { type, src, dst })[]` | Collected list of all mountpoints. Conflicts: Last source wins. | x | x |
-| `onCreateCommand` | `string \| string[]` | Collected list of all onCreateCommands. | x | |
-| `updateContentCommand` | `string \| string[]` | Collected list of all updateContentCommands. | x | |
-| `postCreateCommand` | `string \| string[]` | Collected list of all postCreateCommands. | x | |
-| `postStartCommand` | `string \| string[]` | Collected list of all postStartCommands. | x | |
-| `postAttachCommand` | `string \| string[]` | Collected list of all postAttachCommands. | x | |
+| `onCreateCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all onCreateCommands. | x | |
+| `updateContentCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all updateContentCommands. | x | |
+| `postCreateCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postCreateCommands. | x | |
+| `postStartCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postStartCommands. | x | |
+| `postAttachCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postAttachCommands. | x | |
| `waitFor` | enum | Last value wins. | x | |
| `customizations` | Object of tool-specific customizations. | Merging is left to the tools. | x | x |
| `containerUser` | `string` | Last value wins. | x | |
From ebc4a4b16f38e6e2f3767794501aaa40d3faafff Mon Sep 17 00:00:00 2001
From: Rio Kierkels
Date: Mon, 28 Nov 2022 18:11:20 +0100
Subject: [PATCH 013/333] feat(collection-index): add rio's feature collection
(#87)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index a7accec9..40135c8b 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -123,3 +123,8 @@
contact: https://github.com/lukewiwa/features/issues
repository: https://github.com/lukewiwa/features
ociReference: ghcr.io/lukewiwa/features
+- name: Container and Kubernetes Development Features
+ maintainer: rio
+ contact: https://github.com/rio/features/issues
+ repository: https://github.com/rio/features
+ ociReference: ghcr.io/rio/features
From b75f1b99488d0dc1400ba0a67df052003a8f970b Mon Sep 17 00:00:00 2001
From: Luke Wiwatowski
Date: Tue, 29 Nov 2022 04:12:26 +1100
Subject: [PATCH 014/333] Update collection-index.yml (#89)
Given there is more than shellcheck in this collection I thought I might update it.
---
_data/collection-index.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 40135c8b..c80703bf 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -118,7 +118,7 @@
contact: https://github.com/rjfmachado/devcontainer-features/issues
repository: https://github.com/rjfmachado/devcontainer-features
ociReference: ghcr.io/rjfmachado/devcontainer-features
-- name: Shellcheck
+- name: Wiwa's features
maintainer: lukewiwa
contact: https://github.com/lukewiwa/features/issues
repository: https://github.com/lukewiwa/features
From 26639e224b88ed40bb29947070501d4397ac4370 Mon Sep 17 00:00:00 2001
From: Jacob Hummer
Date: Wed, 30 Nov 2022 11:18:26 -0600
Subject: [PATCH 015/333] Remove the that messes it up in dark mode
(#90)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #88
Nothing else changes when dark mode is enabled, so this is the only thing that does.
When it does, it makes it white-on-white which isn't readable.
The reason I removed the wrapper tag is just personal preference to not
use stuff if it's not needed; and it doesn't seem to be needed when you only have
one and no elements to provide alternatives 🤷♂️.
---
_includes/footer.html | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/_includes/footer.html b/_includes/footer.html
index 03bf7495..63bb8bd7 100644
--- a/_includes/footer.html
+++ b/_includes/footer.html
@@ -28,10 +28,7 @@
From 083859e09084adc23e02b06191306f94b6d6403e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89douard=20Lopez?=
Date: Thu, 1 Dec 2022 17:57:40 +0100
Subject: [PATCH 016/333] Add edouard-lopez/devcontainer-features (#92)
`bats` to help people test their bash code :D
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index c80703bf..7de74685 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -128,3 +128,8 @@
contact: https://github.com/rio/features/issues
repository: https://github.com/rio/features
ociReference: ghcr.io/rio/features
+- name: Édouard-lopez' Features
+ maintainer: edouard-lopez
+ contact: https://github.com/edouard-lopez/devcontainer-features/issues
+ repository: https://github.com/edouard-lopez/devcontainer-features
+ ociReference: ghcr.io/edouard-lopez/devcontainer-features
From 3c12b8cc4d2bb9d59c63cc67a1a0325e9f3996f9 Mon Sep 17 00:00:00 2001
From: Jed Laundry
Date: Sat, 3 Dec 2022 09:11:09 +1300
Subject: [PATCH 017/333] Update collection-index.yml (#94)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 7de74685..28094623 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -133,3 +133,8 @@
contact: https://github.com/edouard-lopez/devcontainer-features/issues
repository: https://github.com/edouard-lopez/devcontainer-features
ociReference: ghcr.io/edouard-lopez/devcontainer-features
+- name: jlaundry Features
+ maintainer: jlaundry
+ contact: https://github.com/jlaundry/devcontainer-features/issues
+ repository: https://github.com/jlaundry/devcontainer-features
+ ociReference: ghcr.io/jlaundry/devcontainer-features
From b9916832370c6e35b7f92cd4f40d599154b70d55 Mon Sep 17 00:00:00 2001
From: Brigit Murtaugh
Date: Fri, 2 Dec 2022 13:52:46 -0800
Subject: [PATCH 018/333] Update `remoteUser` info (#93)
* Update json_reference.md
* Update json_reference.md
* Update json_reference.md
---
_implementors/json_reference.md | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/_implementors/json_reference.md b/_implementors/json_reference.md
index 50be1b57..7cb3e2cb 100644
--- a/_implementors/json_reference.md
+++ b/_implementors/json_reference.md
@@ -19,7 +19,7 @@ Metadata properties marked with a 🏷️️ can be stored in the `devcontainer.
| `portsAttributes` 🏷️ | object | Object that maps a port number, `"host:port"` value, range, or regular expression to a set of default options. See [port attributes](#port-attributes) for available options. For example: `"portsAttributes": {"3000": {"label": "Application port"}}` |
| `otherPortsAttributes` 🏷️ | object | Default options for ports, port ranges, and hosts that aren't configured using `portsAttributes`. See [port attributes](#port-attributes) for available options. For example: `"otherPortsAttributes": {"onAutoForward": "silent"}` |
| `remoteEnv` 🏷️ | object | A set of name-value pairs that sets or overrides environment variables for the `devcontainer.json` supporting service / tool (or sub-processes like terminals) but not the container as a whole. Environment and [pre-defined variables](#variables-in-devcontainerjson) may be referenced in the values. |
-| `remoteUser` 🏷️ | string | Overrides the user that `devcontainer.json` supporting services tools / runs as in the container (along with sub-processes like terminals, tasks, or debugging). Does not change the user the container as a whole runs as which can be set using `containerUser`. Defaults to the user the container as a whole is running as (often `root`). |
+| `remoteUser` 🏷️ | string | Overrides the user that `devcontainer.json` supporting services tools / runs as in the container (along with sub-processes like terminals, tasks, or debugging). Does not change the user the container as a whole runs as which can be set using `containerUser`. Defaults to the user the container as a whole is running as (often `root`). You may learn more in the [remoteUser section below](#remoteUser). |
| `containerEnv` 🏷️ | object | A set of name-value pairs that sets or overrides environment variables for the container. Environment and [pre-defined variables](#variables-in-devcontainerjson) may be referenced in the values. For example: `"containerEnv": { "MY_VARIABLE": "${localEnv:MY_VARIABLE}" }` If you want to reference an existing container variable while setting this one (like updating the `PATH`), use `remoteEnv` instead. |
| `containerUser` 🏷️ | string | Overrides the user for all operations run as inside the container. Defaults to either `root` or the last `USER` instruction in the related Dockerfile used to create the image. If you want any connected tools or related processes to use a different user than the one for the container, see `remoteUser`. |
| `updateRemoteUserUID` 🏷️ | boolean | On Linux, if `containerUser` or `remoteUser` is specified, the user's UID/GID will be updated to match the local user's UID/GID to avoid permission problems with bind mounts. Defaults to `true`. |
@@ -179,3 +179,9 @@ You can see the VS Code implementation of the dev container schema [here](https:
## Publishing vs forwarding ports
Docker has the concept of "publishing" ports when the container is created. Published ports behave very much like ports you make available to your local network. If your application only accepts calls from `localhost`, it will reject connections from published ports just as your local machine would for network calls. Forwarded ports, on the other hand, actually look like `localhost` to the application.
+
+## remoteUser
+
+A dev container configuration will inherit the `remoteUser` property from the base image it uses.
+
+Using the [images](https://github.com/devcontainers/images) and [Templates](https://github.com/devcontainers/templates) part of the spec as an example: `remoteUser` in these images is set to a custom value - you may view an example in the [C++ image](https://github.com/devcontainers/images/blob/main/src/cpp/.devcontainer/devcontainer.json#L26). The [C++ Template](https://github.com/devcontainers/templates/tree/main/src/cpp) will then inherit the custom `remoteUser` value from [its base C++ image](https://github.com/devcontainers/templates/blob/main/src/cpp/.devcontainer/Dockerfile#L1).
From 8dcd243984df6dcefca3eae9a00f6d5ada96266f Mon Sep 17 00:00:00 2001
From: mikaello <2505178+mikaello@users.noreply.github.com>
Date: Mon, 5 Dec 2022 17:41:42 +0100
Subject: [PATCH 019/333] feat(collection-index): add assortated features
collection (#95)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 28094623..537721d4 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -138,3 +138,8 @@
contact: https://github.com/jlaundry/devcontainer-features/issues
repository: https://github.com/jlaundry/devcontainer-features
ociReference: ghcr.io/jlaundry/devcontainer-features
+- name: Assorted Features
+ maintainer: mikaello
+ contact: https://github.com/mikaello/devcontainer-features/issues
+ repository: https://github.com/mikaello/devcontainer-features
+ ociReference: ghcr.io/mikaello/devcontainer-features
From 5d8ea0e21320a61f36af30652bf5d7bf165ae7d9 Mon Sep 17 00:00:00 2001
From: Juan
Date: Thu, 8 Dec 2022 03:33:11 +1100
Subject: [PATCH 020/333] feat(jsburckhardt): add feature registry (#96)
* feat(jsburckhardt): add feature registry
* feat(jsburckhardt): add feature registry
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 537721d4..8f93aaaa 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -143,3 +143,8 @@
contact: https://github.com/mikaello/devcontainer-features/issues
repository: https://github.com/mikaello/devcontainer-features
ociReference: ghcr.io/mikaello/devcontainer-features
+- name: Devcontainer Features
+ maintainer: jsburckhardt
+ contact: https://github.com/jsburckhardt/devcontainer-features/issues
+ repository: https://github.com/jsburckhardt/devcontainer-features
+ ociReference: ghcr.io/jsburckhardt/devcontainer-features
From 5b81e290ab038b008364a8274962bc4f60ef916b Mon Sep 17 00:00:00 2001
From: amyxia
Date: Fri, 9 Dec 2022 02:38:03 +0800
Subject: [PATCH 021/333] add kusion features to devcontainers collection (#91)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 8f93aaaa..80a2ec83 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -128,6 +128,11 @@
contact: https://github.com/rio/features/issues
repository: https://github.com/rio/features
ociReference: ghcr.io/rio/features
+- name: Kusion Features
+ maintainer: KusionStack
+ contact: https://github.com/KusionStack/devcontainer-features/issues
+ repository: https://github.com/KusionStack/devcontainer-features
+ ociReference: ghcr.io/KusionStack/devcontainer-features
- name: Édouard-lopez' Features
maintainer: edouard-lopez
contact: https://github.com/edouard-lopez/devcontainer-features/issues
From adf68b8498f072d701e1375b1ca4911a69a3d01b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oleksis=20Fraga=20Men=C3=A9ndez?=
<44526468+oleksis@users.noreply.github.com>
Date: Fri, 9 Dec 2022 15:23:10 -0500
Subject: [PATCH 022/333] Add NAPPTIVE Playground CLI feature to the collection
index (#97)
* Add NAPPTIVE Playground CLI feature to the collection index
* Update _data/collection-index.yml
The ociReference is the ${registry}/${owner}/${repoName} without the id part.
Co-authored-by: Samruddhi Khandale
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 80a2ec83..d78912d5 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -153,3 +153,8 @@
contact: https://github.com/jsburckhardt/devcontainer-features/issues
repository: https://github.com/jsburckhardt/devcontainer-features
ociReference: ghcr.io/jsburckhardt/devcontainer-features
+- name: NAPPTIVE Playground CLI Features
+ maintainer: oleksis
+ contact: https://github.com/oleksis/playground-cli/issues
+ repository: https://github.com/oleksis/playground-cli
+ ociReference: ghcr.io/oleksis/playground-cli
From 7ccafd03b9e195ff5b82cc16514c2e23c2b2f02e Mon Sep 17 00:00:00 2001
From: Daniel Braun
Date: Mon, 12 Dec 2022 18:37:14 +0200
Subject: [PATCH 023/333] Added devcontainer-contrib templates collection (#98)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently this template collection contains a basic terraform template (not azure-oriented like the current official terraform-azure template). I also plan o expand the collection in the future 😄
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index d78912d5..6bd62e01 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -43,6 +43,11 @@
contact: https://github.com/devcontainers-contrib/features/issues
repository: https://github.com/devcontainers-contrib/features
ociReference: ghcr.io/devcontainers-contrib/features
+- name: DevContainers-Contrib Templates
+ maintainer: Daniel Braun
+ contact: https://github.com/devcontainers-contrib/templates/issues
+ repository: https://github.com/devcontainers-contrib/templates
+ ociReference: ghcr.io/devcontainers-contrib/templates
- name: Assorted Features
maintainer: eitsupi
contact: https://github.com/eitsupi/devcontainer-features/issues
From 9e8f63c2e980634e4a71d8e6e3144d488521c27f Mon Sep 17 00:00:00 2001
From: Eki Baskoro <431041+ebaskoro@users.noreply.github.com>
Date: Tue, 13 Dec 2022 03:52:54 +1100
Subject: [PATCH 024/333] Updated collection index. (#99)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 6bd62e01..d2112c1a 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -163,3 +163,8 @@
contact: https://github.com/oleksis/playground-cli/issues
repository: https://github.com/oleksis/playground-cli
ociReference: ghcr.io/oleksis/playground-cli
+- name: Baskoro OSI devcontainer features
+ maintainer: Eki Baskoro
+ contact: https://github.com/ebaskoro/devcontainer-features/issues
+ repository: https://github.com/ebaskoro/devcontainer-features
+ ociReference: ghcr.io/ebaskoro/devcontainer-features
\ No newline at end of file
From 0ae6515258e645503e1c77a195565545014140d2 Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Tue, 13 Dec 2022 09:51:04 -0800
Subject: [PATCH 025/333] Add limitations, new supporting tools (#100)
---
supporting.md | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/supporting.md b/supporting.md
index f0163ddc..849bd857 100644
--- a/supporting.md
+++ b/supporting.md
@@ -41,7 +41,7 @@ You may learn more in the [announcement blog post](https://devblogs.microsoft.co
## Tools
-## Dev container CLI
+## Dev Container CLI
A dev container command line interface (CLI) that implements this specification. It is in development in the [devcontainers/cli](https://github.com/devcontainers/cli) repo.
@@ -51,6 +51,15 @@ The CLI can take a `devcontainer.json` and create and configure a dev container
VS Code has a [CLI](https://code.visualstudio.com/docs/remote/devcontainer-cli) which may be installed within the Dev Containers extension or through the command line.
+### Cachix devenv
+
+Cachix's [devenv](https://devenv.sh/) supports automatically generating a `.devcontainer.json` file so you can use it with any Dev Container spec supporting tool. See [devenv documentation](https://devenv.sh/integrations/codespaces-devcontainer/) for detais.
+
+### Jetpack.io Devbox
+
+[Jetpack.io's VS Code extension](https://marketplace.visualstudio.com/items?itemName=jetpack-io.devbox) supports a **Generate Dev Container files** command so you can use Jetpack.io from Dev Container spec supporting tools.
+
+
### Visual Studio Code Dev Containers
The [**Visual Studio Code Dev Containers** extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) lets you use a [Docker container](https://docker.com) as a full-featured development environment. It allows you to open any folder inside (or mounted into) a container and take advantage of Visual Studio Code's full feature set. There is more information in the Dev Containers [documentation](https://code.visualstudio.com/docs/remote/containers).
@@ -101,18 +110,21 @@ If your Codespaces project needs additional permissions for other repositories,
}
```
+Note that currently Codespaces reads these properties from devcontainer.json, not image metadata.
+
#### Product specific limitations
Some properties may apply differently to Codespaces.
-| Property or variable | Type | Description |
-|:------------------|:------------|:------------|
+| Property or variable | Type | Description |
+|----------|---------|----------------------|
| `mounts` | array | Codespaces ignores "bind" mounts with the exception of the Docker socket. Volume mounts are still allowed.|
| `forwardPorts` | array | Codespaces does not yet support the `"host:port"` variation of this property. |
| `portsAttributes` | object | Codespaces does not yet support the `"host:port"` variation of this property.|
| `shutdownAction` | enum | Does not apply to Codespaces. |
| `${localEnv:VARIABLE_NAME}` | Any | For Codespaces, the host is in the cloud rather than your local machine.|
-| `waitFor` | enum | Codespaces does not yet support `waitFor`. |
+| `customizations.codespaces` | object | Codespaces reads this property from devcontainer.json, not image metadata. |
+| `hostRequirements` | object | Codespaces reads this property from devcontainer.json, not image metadata. |
{: .table .table-bordered .table-responsive}
### Schema
From 4bc5ecf0c67ff636096dc4be1fa0a31fea15a635 Mon Sep 17 00:00:00 2001
From: Warren Buckley
Date: Wed, 14 Dec 2022 17:19:25 +0000
Subject: [PATCH 026/333] Adds in my CodeSpaces Features to list SQLite &
SMTP4Dev (#101)
---
_data/collection-index.yml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index d2112c1a..e1123bcc 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -167,4 +167,9 @@
maintainer: Eki Baskoro
contact: https://github.com/ebaskoro/devcontainer-features/issues
repository: https://github.com/ebaskoro/devcontainer-features
- ociReference: ghcr.io/ebaskoro/devcontainer-features
\ No newline at end of file
+ ociReference: ghcr.io/ebaskoro/devcontainer-features
+- name: A collection of useful GitHub CodeSpace features
+ maintainer: Warren Buckley
+ contact: https://github.com/warrenbuckley/codespace-features/issues
+ repository: https://github.com/warrenbuckley/codespace-features
+ ociReference: ghcr.io/warrenbuckley/codespace-features
From c035f27b24faed8db695edfc66f092f1579295fa Mon Sep 17 00:00:00 2001
From: James Mart <42752296+James-Mart@users.noreply.github.com>
Date: Wed, 14 Dec 2022 12:23:30 -0500
Subject: [PATCH 027/333] add psibase devcontainer template repo (#102)
Co-authored-by: Josh Spicer
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index e1123bcc..25e4fab7 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -163,6 +163,11 @@
contact: https://github.com/oleksis/playground-cli/issues
repository: https://github.com/oleksis/playground-cli
ociReference: ghcr.io/oleksis/playground-cli
+- name: Psibase templates
+ maintainer: James-Mart
+ contact: https://github.com/gofractally/psibase-devcontainer-template/issues
+ repository: https://github.com/gofractally/psibase-devcontainer-template/issues
+ ociReference: ghcr.io/gofractally/psibase-devcontainer-template
- name: Baskoro OSI devcontainer features
maintainer: Eki Baskoro
contact: https://github.com/ebaskoro/devcontainer-features/issues
From 051079f5af9885f1fdb426190384c52d04cd6fd7 Mon Sep 17 00:00:00 2001
From: Rahul goyal <36236894+rahulgoyal436@users.noreply.github.com>
Date: Thu, 15 Dec 2022 22:41:09 +0530
Subject: [PATCH 028/333] Update collection-index.yml (#104)
Roost cluster feature addition
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 25e4fab7..576cfe4c 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -178,3 +178,8 @@
contact: https://github.com/warrenbuckley/codespace-features/issues
repository: https://github.com/warrenbuckley/codespace-features
ociReference: ghcr.io/warrenbuckley/codespace-features
+- name: Roost Cluster
+ maintainer: Roost.ai (Harish Agrawal)
+ contact: https://github.com/roost-io/features/issues
+ repository: https://github.com/roost-io/features
+ ociReference: ghcr.io/roost-io/features
From a4fd425081c993289887a879d90f645c9d91073e Mon Sep 17 00:00:00 2001
From: Josh Spicer
Date: Thu, 15 Dec 2022 09:56:28 -0800
Subject: [PATCH 029/333] update hyperlink (#103)
---
_posts/2022-11-01-author-a-feature.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/_posts/2022-11-01-author-a-feature.md b/_posts/2022-11-01-author-a-feature.md
index dabcae96..68829b16 100644
--- a/_posts/2022-11-01-author-a-feature.md
+++ b/_posts/2022-11-01-author-a-feature.md
@@ -101,8 +101,8 @@ https://github.com/users//packages/container/%2F/setti
If you'd like your Features to appear in our [public index](/features) so that other community members can find them, you can do the following:
-* Go to [github.com/devcontainers/devcontainers.github.io](github.com/devcontainers/devcontainers.github.io), which is the GitHub repo backing [containers.dev](https://containers.dev/)
+* Go to [github.com/devcontainers/devcontainers.github.io](https://github.com/devcontainers/devcontainers.github.io), which is the GitHub repo backing [containers.dev](https://containers.dev/)
* Open a PR to modify the [collection-index.yml](https://github.com/devcontainers/devcontainers.github.io/blob/gh-pages/_data/collection-index.yml) file
* Features housed in other OCI Artifact container registries can be included as long as they can be downloaded without a login.
-Feature collections are scanned to populate a Feature index on the [containers.dev site](/features) and allow them to appear in Dev Container creation UX in [supporting tools](https://containers.dev/supporting) like [VS Code Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) and [GitHub Codespaces](https://github.com/features/codespaces).
\ No newline at end of file
+Feature collections are scanned to populate a Feature index on the [containers.dev site](/features) and allow them to appear in Dev Container creation UX in [supporting tools](https://containers.dev/supporting) like [VS Code Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) and [GitHub Codespaces](https://github.com/features/codespaces).
From 3ce318234e8f0fd9776c20bcca3543fa49339edb Mon Sep 17 00:00:00 2001
From: Lennart Jern
Date: Fri, 16 Dec 2022 21:39:33 +0200
Subject: [PATCH 030/333] Add lentzi90 features (#106)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 576cfe4c..eaba313d 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -183,3 +183,8 @@
contact: https://github.com/roost-io/features/issues
repository: https://github.com/roost-io/features
ociReference: ghcr.io/roost-io/features
+- name: lentzi90 devcontainer features
+ maintainer: Lennart Jern
+ contact: https://github.com/lentzi90/features/issues
+ repository: https://github.com/lentzi90/features
+ ociReference: ghcr.io/lentzi90/features
From 966ca8df2ad48f82ba87d6943a0cbaac88776590 Mon Sep 17 00:00:00 2001
From: Josh Abernathy
Date: Fri, 16 Dec 2022 14:42:43 -0500
Subject: [PATCH 031/333] Add docs for codespaces.openFiles (#105)
---
supporting.md | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/supporting.md b/supporting.md
index 849bd857..4cf991f4 100644
--- a/supporting.md
+++ b/supporting.md
@@ -97,19 +97,34 @@ If your Codespaces project needs additional permissions for other repositories,
```json
"customizations": {
- // Configure properties specific to Codespaces.
- "codespaces": {
- "repositories": {
- "my_org/my_repo": {
- "permissions": {
- "issues": "write"
- }
+ // Configure properties specific to Codespaces.
+ "codespaces": {
+ "repositories": {
+ "my_org/my_repo": {
+ "permissions": {
+ "issues": "write"
}
}
}
+ }
}
```
+You can customize which files are initially opened when the codespace is created:
+```json
+"customizations": {
+ // Configure properties specific to Codespaces.
+ "codespaces": {
+ "openFiles": [
+ "README"
+ "src/index.js"
+ ]
+ }
+}
+```
+
+The paths are relative to the root of the repository. They will be opened in order, with the first file activated.
+
Note that currently Codespaces reads these properties from devcontainer.json, not image metadata.
#### Product specific limitations
From b26f99e2a57d1baf77a4c4ddf70e28fa7628050a Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Fri, 16 Dec 2022 12:24:19 -0800
Subject: [PATCH 032/333] Add article on using Dockerfiles/Compose, formatting
tweaks and clarifications (#107)
Co-authored-by: Brigit Murtaugh
Co-authored-by: Samruddhi Khandale
---
_posts/2022-11-01-author-a-feature.md | 2 +-
_posts/2022-12-16-dockerfiles.md | 142 ++++++++++++++++++++++++++
supporting.md | 34 +++---
3 files changed, 163 insertions(+), 15 deletions(-)
create mode 100644 _posts/2022-12-16-dockerfiles.md
diff --git a/_posts/2022-11-01-author-a-feature.md b/_posts/2022-11-01-author-a-feature.md
index 68829b16..ed9f3a7d 100644
--- a/_posts/2022-11-01-author-a-feature.md
+++ b/_posts/2022-11-01-author-a-feature.md
@@ -5,7 +5,7 @@ author: "@joshspicer"
authorUrl: https://github.com/joshspicer
---
-Development container ['Features'](/features) are self-contained, shareable units of installation code and development container configuration. We [define a pattern](/implementors/features-distribution) for authoring and self-publishing Features.
+Development container ["Features"](/features) are self-contained, shareable units of installation code and development container configuration. We [define a pattern](/implementors/features-distribution) for authoring and self-publishing Features.
In this document, we'll outline a "quickstart" to help you get up-and-running with creating and sharing your first Feature. You may review an example along with guidance in our [devcontainers/feature-starter](https://github.com/devcontainers/feature-starter) repo as well.
diff --git a/_posts/2022-12-16-dockerfiles.md b/_posts/2022-12-16-dockerfiles.md
new file mode 100644
index 00000000..be8b8c2a
--- /dev/null
+++ b/_posts/2022-12-16-dockerfiles.md
@@ -0,0 +1,142 @@
+---
+layout: post
+title: "Using Images, Dockerfiles, and Docker Compose"
+author: "@chuxel"
+authorUrl: https://github.com/chuxel
+---
+
+When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](#dockerfile) or [Docker Compose / Compose](#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
+
+## Using a Dockerfile
+
+To keep things simple, many [Dev Container Templates](/templates) use container image references.
+
+```json
+{
+ "image": "mcr.microsoft.com/devcontainers/base:ubuntu"
+}
+```
+
+However, [Dockerfiles](https://docs.docker.com/engine/reference/builder/) are a great way to extend images, add additional native OS packages, or make minor edits to the OS image. You can reuse any Dockerfile, but let's walk through how to create one from scratch.
+
+First, add a file named `Dockerfile` next to your `devcontainer.json`. For example:
+
+```Dockerfile
+FROM mcr.microsoft.com/devcontainers/base:ubuntu
+# Install the xz-utils package
+RUN apt-get update && apt-get install -y xz-utils
+```
+
+Next, remove the `image` property from `devcontainer.json` (if it exists) and add the `build` and `dockerfile` properties instead:
+
+```json
+{
+ "build": {
+ // Path is relataive to the devcontainer.json file.
+ "dockerfile": "Dockerfile"
+ }
+}
+```
+
+That's it! When you start up your Dev Container, the Dockerfile will be automatically built with no additional work. See [Dockerfile scenario reference](implementors/json_reference/#image-specific) for more information on other related devcontainer.json properties.
+
+### Iterating on an image that includes Dev Container metadata
+
+Better yet, you can can use a Dockerfile as a part of authoring an image you can share with others. You can even **add Dev Container settings and metadata right into the image itself**. This avoids having to duplicate config and settings in multiple devcontainer.json files and keeps them in sync with your images!
+
+See the reference on **[pre-building](/implementors/reference/#prebuilding)** to learn more!
+
+## Using a Dockerfile
+
+[Docker Compose](https://docs.docker.com/compose/) is a great way to define a multi-container development environment. Rather than adding things like databases or redis to your Dockerfile, you can reference existing images for these services and focus your Dev Container's content on tools and utilities you need for development.
+
+### Using an image with Docker Compose
+
+As mentioned in the Dockerfile section, to keep things simple, many [Dev Container Templates](/templates) use container image references.
+
+```json
+{
+ "image": "mcr.microsoft.com/devcontainers/base:ubuntu"
+}
+```
+
+Let's create a `docker-compose.yml` file next to your `devcontainer.json` that references the same image and includes a PostgreSQL database:
+
+```yaml
+version: '3.8'
+services:
+ devcontainer:
+ image: mcr.microsoft.com/devcontainers/base:ubuntu
+ volumes:
+ - ../..:/workspaces:cached
+ network_mode: service:db
+ command: sleep infinity
+
+ db:
+ image: postgres:latest
+ restart: unless-stopped
+ volumes:
+ - postgres-data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_USER: postgres
+ POSTGRES_DB: postgres
+
+volumes:
+ postgres-data:
+```
+
+In this example:
+- `../..:/workspaces:cached` mounts the workspace folder from the local source tree into the Dev Container.
+- `network_mode: service:db` puts the Dev Container on the same network as the database, so that it can access it on `localhost`.
+- The `db` section uses the [Postgres](https://hub.docker.com/_/postgres) image with a few settings.
+
+Next, let's configure devcontainer.json to use it.
+
+```json
+{
+ "dockerComposeFile": "docker-compose.yml",
+ "service": "devcontainer",
+ "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}"
+}
+```
+
+In this example:
+- `service` indicates which service in the `docker-compose.yml` file is the Dev Container.
+- `dockerComposeFile` indicates where to find the `docker-compose.yml` file.
+- `workspaceFolder` indicates where to mount the workspace folder. This corresponds to a sub-folder under the mount point from `../..:/workspaces:cached` in the `docker-compose.yml` file.
+
+That's it!
+
+### Using a Dockerfile with Docker Compose
+
+You can also combine these scenarios and use Dockerfile with Docker Compose. This time we'll update `docker-compose.yml` to reference the Dockerfile by replacing `image` with a similar `build` section:
+
+```yaml
+version: '3.8'
+services:
+ devcontainer:
+ build:
+ context: .
+ dockerfile: Dockerfile
+ volumes:
+ - ../..:/workspaces:cached
+ network_mode: service:db
+
+ db:
+ image: postgres:latest
+ restart: unless-stopped
+ volumes:
+ - postgres-data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_USER: postgres
+ POSTGRES_DB: postgres
+
+volumes:
+ postgres-data:
+```
+
+Finally, as in the Dockerfile example, you can use this same setup to author a Dev Container image you can share with others and add Dev Container settings and metadata right into the image itself.
+
+See the reference on **[pre-building](/implementors/reference/#prebuilding)** to learn more!
\ No newline at end of file
diff --git a/supporting.md b/supporting.md
index 4cf991f4..bdeaab41 100644
--- a/supporting.md
+++ b/supporting.md
@@ -31,7 +31,7 @@ Visual Studio Code specific properties go under `vscode` inside `customizations`
| `settings` | object | Adds default `settings.json` values into a container/machine specific settings file. Defaults to `{}`. |
{: .table .table-bordered .table-responsive}
-Please note that [Dev Containers](#dev-containers) and [GitHub Codespaces](#github-codespaces) support the VS Code properties.
+Please note that the [Dev Containers](#dev-containers) extension and [GitHub Codespaces](#github-codespaces) support these VS Code properties.
### Visual Studio
@@ -41,30 +41,36 @@ You may learn more in the [announcement blog post](https://devblogs.microsoft.co
## Tools
-## Dev Container CLI
+### Dev Container CLI
-A dev container command line interface (CLI) that implements this specification. It is in development in the [devcontainers/cli](https://github.com/devcontainers/cli) repo.
+The dev container command line interface (CLI) is a reference implementation for the Dev Container spec. It is in development in the [devcontainers/cli](https://github.com/devcontainers/cli) repo. It is intended both for use directly and by tools or services that want to support the spec.
-The CLI can take a `devcontainer.json` and create and configure a dev container from it. It allows for prebuilding dev container definitions using a CI or DevOps product like GitHub Actions. It can detect and include dev container features and apply them at container runtime, and run [lifecycle commands](implementors/json_reference/#lifecycle-scripts) like `postCreateCommand`, providing more power than a plain `docker build` and `docker run`.
-### VS Code extension CLI
+The CLI can take a `devcontainer.json` and create and configure a dev container from it. It allows for prebuilding dev container definitions using a CI or DevOps product like GitHub Actions. It can detect and include dev container features and apply them at container runtime, and run [lifecycle scripts](implementors/json_reference/#lifecycle-scripts) like `postCreateCommand`, providing more power than a plain `docker build` and `docker run`.
-VS Code has a [CLI](https://code.visualstudio.com/docs/remote/devcontainer-cli) which may be installed within the Dev Containers extension or through the command line.
+#### VS Code extension CLI
+
+The [VS Code Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) includes a variation of the devcontainer CLI that adds the ability use the command line to open the a Dev Container in VS Code. It is also automatically updated when the extension updates.
+
+Press cmd/ctrl+shift+p or F1 and select the **Dev Containers: Install devcontainer CLI** command to install it.
### Cachix devenv
-Cachix's [devenv](https://devenv.sh/) supports automatically generating a `.devcontainer.json` file so you can use it with any Dev Container spec supporting tool. See [devenv documentation](https://devenv.sh/integrations/codespaces-devcontainer/) for detais.
+Cachix's **[devenv](https://devenv.sh/)** now supports automatically generating a `.devcontainer.json` file. This gives you a more convenient and consistent way to use [Nix](https://nixos.org/) with any Dev Container spec supporting tool or service!
+
+See [devenv documentation](https://devenv.sh/integrations/codespaces-devcontainer/) for detais.
### Jetpack.io Devbox
-[Jetpack.io's VS Code extension](https://marketplace.visualstudio.com/items?itemName=jetpack-io.devbox) supports a **Generate Dev Container files** command so you can use Jetpack.io from Dev Container spec supporting tools.
+[Jetpack.io](https://jetpack.io) is a [Nix](https://nixos.org/)-based service for deploying applications. [DevBox](https://www.jetpack.io/devbox/) provides a way to use Nix to generate a development environment. [Jetpack.io's VS Code extension](https://marketplace.visualstudio.com/items?itemName=jetpack-io.devbox) allows you to quickly take advantage of DevBox in any Dev Container spec supporting tool or service.
+Press cmd/ctrl+shift+p or F1 and select the **Generate Dev Container files** command to get started!
-### Visual Studio Code Dev Containers
+### VS Code Dev Containers extension
-The [**Visual Studio Code Dev Containers** extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) lets you use a [Docker container](https://docker.com) as a full-featured development environment. It allows you to open any folder inside (or mounted into) a container and take advantage of Visual Studio Code's full feature set. There is more information in the Dev Containers [documentation](https://code.visualstudio.com/docs/remote/containers).
+The [Visual Studio Code Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) lets you use a [Docker container](https://docker.com) as a full-featured development environment. It allows you to open any folder inside (or mounted into) a container and take advantage of Visual Studio Code's full feature set. There is more information in the Dev Containers [documentation](https://code.visualstudio.com/docs/remote/containers).
-> **Tip:** If you make a change to your dev container after having built and connected to it, be sure to run **Dev Containers: Rebuild Container** from the Command Palette (`kbstyle(F1)`) to pick up any changes you make.
+> **Tip:** If you make a change to your dev container after having built and connected to it, be sure to run **Dev Containers: Rebuild Container** from the Command Palette (cmd/ctrl+shift+p or F1) to pick up any changes you make.
#### Product specific properties
@@ -82,13 +88,13 @@ Some properties may also have certain limitations in the Dev Containers extensio
| `${localWorkspaceFolderBasename}` | Any | Not yet supported when using Clone Repository in Container Volume. |
{: .table .table-bordered .table-responsive}
+## Services
+
### GitHub Codespaces
A [codespace](https://docs.github.com/en/codespaces/overview) is a development environment that's hosted in the cloud. Codespaces run on a variety of VM-based compute options hosted by GitHub.com, which you can configure from 2 core machines up to 32 core machines. You can connect to your codespaces from the browser or locally using Visual Studio Code.
-> **Tip:** If you make a change to your dev container after having built and connected to your codespace, be sure to run **Codespaces: Rebuild Container** from the Command Palette (`kbstyle(F1)`) to pick up any changes you make.
-
-> **Tip** Codespaces implements an auto `workspaceFolder` mount in **Docker Compose** scenarios.
+> **Tip:** If you make a change to your dev container after having built and connected to your codespace, be sure to run **Codespaces: Rebuild Container** from the Command Palette (cmd/ctrl+shift+p or F1) to pick up any changes you make.
#### Product specific properties
GitHub Codespaces works with a growing number of tools and, where applicable, their `devcontainer.json` properties. For example, connecting the Codespaces web editor or VS Code enables the use of [VS Code properties](#visual-studio-code).
From 68b15bbcb9a068b7acef2af3498ecce8cf41b12a Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Fri, 16 Dec 2022 12:39:49 -0800
Subject: [PATCH 033/333] Fix typo, links in dockerfile guide (#108)
---
_posts/2022-12-16-dockerfiles.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/_posts/2022-12-16-dockerfiles.md b/_posts/2022-12-16-dockerfiles.md
index be8b8c2a..904f24fb 100644
--- a/_posts/2022-12-16-dockerfiles.md
+++ b/_posts/2022-12-16-dockerfiles.md
@@ -5,7 +5,7 @@ author: "@chuxel"
authorUrl: https://github.com/chuxel
---
-When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](#dockerfile) or [Docker Compose / Compose](#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
+When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](/implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](/implementors/guide/dockerfiles#dockerfile) or [Docker Compose / Compose](/implementors/guide/dockerfiles#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
## Using a Dockerfile
@@ -46,7 +46,7 @@ Better yet, you can can use a Dockerfile as a part of authoring an image you can
See the reference on **[pre-building](/implementors/reference/#prebuilding)** to learn more!
-## Using a Dockerfile
+## Using Docker Compose
[Docker Compose](https://docs.docker.com/compose/) is a great way to define a multi-container development environment. Rather than adding things like databases or redis to your Dockerfile, you can reference existing images for these services and focus your Dev Container's content on tools and utilities you need for development.
From 7838c5a5ebd784f7d60bf9e22fef6f25a56828e6 Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Fri, 16 Dec 2022 12:48:38 -0800
Subject: [PATCH 034/333] More minor fixes for Dockerfile guide
---
_posts/2022-12-16-dockerfiles.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/_posts/2022-12-16-dockerfiles.md b/_posts/2022-12-16-dockerfiles.md
index 904f24fb..e7c08d7d 100644
--- a/_posts/2022-12-16-dockerfiles.md
+++ b/_posts/2022-12-16-dockerfiles.md
@@ -5,7 +5,7 @@ author: "@chuxel"
authorUrl: https://github.com/chuxel
---
-When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](/implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](/implementors/guide/dockerfiles#dockerfile) or [Docker Compose / Compose](/implementors/guide/dockerfiles#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
+When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](/implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](/guide/dockerfiles#dockerfile) or [Docker Compose / Compose](/guide/dockerfiles#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
## Using a Dockerfile
@@ -122,6 +122,7 @@ services:
volumes:
- ../..:/workspaces:cached
network_mode: service:db
+ command: sleep infinity
db:
image: postgres:latest
From 00aff545a559ade0cd0671183c621c8f96da7d66 Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Fri, 16 Dec 2022 13:01:13 -0800
Subject: [PATCH 035/333] Rename guide to match template links
---
_posts/{2022-12-16-dockerfiles.md => 2022-12-16-dockerfile.md} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename _posts/{2022-12-16-dockerfiles.md => 2022-12-16-dockerfile.md} (95%)
diff --git a/_posts/2022-12-16-dockerfiles.md b/_posts/2022-12-16-dockerfile.md
similarity index 95%
rename from _posts/2022-12-16-dockerfiles.md
rename to _posts/2022-12-16-dockerfile.md
index e7c08d7d..ecdb6b28 100644
--- a/_posts/2022-12-16-dockerfiles.md
+++ b/_posts/2022-12-16-dockerfile.md
@@ -5,7 +5,7 @@ author: "@chuxel"
authorUrl: https://github.com/chuxel
---
-When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](/implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](/guide/dockerfiles#dockerfile) or [Docker Compose / Compose](/guide/dockerfiles#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
+When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](/implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](/guide/dockerfile#dockerfile) or [Docker Compose / Compose](/guide/dockerfile#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
## Using a Dockerfile
From b5bea87cecf2a7435e03f91595b73b98d45f0c40 Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Fri, 16 Dec 2022 13:30:03 -0800
Subject: [PATCH 036/333] Add #
---
_posts/2022-12-16-dockerfile.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/_posts/2022-12-16-dockerfile.md b/_posts/2022-12-16-dockerfile.md
index ecdb6b28..556abe6f 100644
--- a/_posts/2022-12-16-dockerfile.md
+++ b/_posts/2022-12-16-dockerfile.md
@@ -7,7 +7,7 @@ authorUrl: https://github.com/chuxel
When creating a development container, you have a variety of different ways to customize your environment like ["Features"](/features) or [lifecycle scripts](/implementors/json_reference/#lifecycle-scripts). However, if you are familiar with containers, you may want to use a [Dockerfile](/guide/dockerfile#dockerfile) or [Docker Compose / Compose](/guide/dockerfile#docker-compose) to customize your environment. This article will walk through how to use these formats with the Dev Container spec.
-## Using a Dockerfile
+## Using a Dockerfile
To keep things simple, many [Dev Container Templates](/templates) use container image references.
@@ -40,17 +40,17 @@ Next, remove the `image` property from `devcontainer.json` (if it exists) and ad
That's it! When you start up your Dev Container, the Dockerfile will be automatically built with no additional work. See [Dockerfile scenario reference](implementors/json_reference/#image-specific) for more information on other related devcontainer.json properties.
-### Iterating on an image that includes Dev Container metadata
+### Iterating on an image that includes Dev Container metadata
Better yet, you can can use a Dockerfile as a part of authoring an image you can share with others. You can even **add Dev Container settings and metadata right into the image itself**. This avoids having to duplicate config and settings in multiple devcontainer.json files and keeps them in sync with your images!
See the reference on **[pre-building](/implementors/reference/#prebuilding)** to learn more!
-## Using Docker Compose
+## Using Docker Compose
[Docker Compose](https://docs.docker.com/compose/) is a great way to define a multi-container development environment. Rather than adding things like databases or redis to your Dockerfile, you can reference existing images for these services and focus your Dev Container's content on tools and utilities you need for development.
-### Using an image with Docker Compose
+### Using an image with Docker Compose
As mentioned in the Dockerfile section, to keep things simple, many [Dev Container Templates](/templates) use container image references.
@@ -108,7 +108,7 @@ In this example:
That's it!
-### Using a Dockerfile with Docker Compose
+### Using a Dockerfile with Docker Compose
You can also combine these scenarios and use Dockerfile with Docker Compose. This time we'll update `docker-compose.yml` to reference the Dockerfile by replacing `image` with a similar `build` section:
From 24d9f6f98483a3a0c2e7d18b880b708acb101f98 Mon Sep 17 00:00:00 2001
From: Josh Spicer
Date: Mon, 19 Dec 2022 12:20:10 -0500
Subject: [PATCH 037/333] installAfter -> installsAfter typo (#109)
---
_implementors/features.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_implementors/features.md b/_implementors/features.md
index 199b8a3d..b32179a1 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -365,7 +365,7 @@ Optimize? true
There are several things to keep in mind for an application that implements Features:
-- The order of execution of Features is determined by the application, based on the `installAfter` property used by Feature authors. It can be overridden by users if necessary with the `overrideFeatureInstallOrder` in `devcontainer.json`.
+- The order of execution of Features is determined by the application, based on the `installsAfter` property used by Feature authors. It can be overridden by users if necessary with the `overrideFeatureInstallOrder` in `devcontainer.json`.
- Features are used to create an image that can be used to create a container or not.
- Parameters like `privileged`, `init` are included if just 1 feature requires them.
- Parameters like `capAdd`, `securityOp` are concatenated.
From e4f84990552c392dc64b8672c912e63fd7205b6a Mon Sep 17 00:00:00 2001
From: Robert Syme
Date: Tue, 20 Dec 2022 20:33:16 -0500
Subject: [PATCH 038/333] Update collection-index.yml (#110)
Add robsyme/features to collections
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index eaba313d..169cbeb8 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -188,3 +188,8 @@
contact: https://github.com/lentzi90/features/issues
repository: https://github.com/lentzi90/features
ociReference: ghcr.io/lentzi90/features
+- name: Nextflow devcontainer features
+ maintainer: Rob Syme
+ contact: https://github.com/robsyme/features/issues
+ repository: https://github.com/robsyme/features
+ ociReference: ghcr.io/robsyme/features
From 1ad2625280b8c33d87d40f41f6b385fb1334941a Mon Sep 17 00:00:00 2001
From: Brendan Burns
Date: Thu, 22 Dec 2022 16:09:22 -0800
Subject: [PATCH 039/333] Add dev-wasm feature information. (#112)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 169cbeb8..380f65ad 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -193,3 +193,8 @@
contact: https://github.com/robsyme/features/issues
repository: https://github.com/robsyme/features
ociReference: ghcr.io/robsyme/features
+- name: Wasmtime + WASI Web Assembly features
+ contact: https://github.com/dev-wasm/dev-wasm-feature/issues
+ repository: https://github.com/dev-wasm/dev-wasm-feature
+ maintainer: Brendan Burns
+ ociReference: devwasm.azurecr.io/dev-wasm/dev-wasm-feature
From 6ca831626066595e5d82701de66121690d39f09d Mon Sep 17 00:00:00 2001
From: shinepukur <119420007+shinepukur@users.noreply.github.com>
Date: Tue, 27 Dec 2022 17:49:04 +0100
Subject: [PATCH 040/333] Update collection-index.yml (#113)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 380f65ad..541fe499 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -198,3 +198,8 @@
repository: https://github.com/dev-wasm/dev-wasm-feature
maintainer: Brendan Burns
ociReference: devwasm.azurecr.io/dev-wasm/dev-wasm-feature
+- name: shinepukur devcontainer features
+ maintainer: Shine Pukur
+ contact: https://github.com/shinepukur/devcontainer-features/issues
+ repository: https://github.com/shinepukur/devcontainer-features
+ ociReference: ghcr.io/shinepukur/devcontainer-features
From 72c85234ff7bc6e426dca861e3ecfa66a85459ea Mon Sep 17 00:00:00 2001
From: Msclock <43399351+msclock@users.noreply.github.com>
Date: Thu, 29 Dec 2022 05:14:55 +0800
Subject: [PATCH 041/333] Update collection-index.yml (#116)
---
_data/collection-index.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 541fe499..6c0dd87f 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -203,3 +203,9 @@
contact: https://github.com/shinepukur/devcontainer-features/issues
repository: https://github.com/shinepukur/devcontainer-features
ociReference: ghcr.io/shinepukur/devcontainer-features
+- name: msclock devcontainer features
+ maintainer: msclock
+ contact: https://github.com/msclock/features/issues
+ repository: https://github.com/msclock/features
+ ociReference: ghcr.io/msclock/features
+
From a6d8f01139b3187ad9589d06e40636d003458c8a Mon Sep 17 00:00:00 2001
From: Grant G
Date: Wed, 28 Dec 2022 19:45:05 -0500
Subject: [PATCH 042/333] Add Fig features (#117)
* feat: add withfig/features
* Update collection-index.yml
---
_data/collection-index.yml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 6c0dd87f..787cc977 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -208,4 +208,8 @@
contact: https://github.com/msclock/features/issues
repository: https://github.com/msclock/features
ociReference: ghcr.io/msclock/features
-
+- name: Fig Dev Container Features
+ maintainer: grant0417
+ contact: https://github.com/withfig/features/issues
+ repository: https://github.com/withfig/features
+ ociReference: ghcr.io/withfig/features
From 4b319456f6a020fb73e774d4a77b6f84bc9391c8 Mon Sep 17 00:00:00 2001
From: eitsupi <50911393+eitsupi@users.noreply.github.com>
Date: Wed, 4 Jan 2023 05:06:50 +0900
Subject: [PATCH 043/333] Add mamba-org/devcontainer-features to the index
(#118)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 787cc977..22da1078 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -213,3 +213,8 @@
contact: https://github.com/withfig/features/issues
repository: https://github.com/withfig/features
ociReference: ghcr.io/withfig/features
+- name: Mamba Features
+ maintainer: mamba-org
+ contact: https://github.com/mamba-org/devcontainer-features/issues
+ repository: https://github.com/mamba-org/devcontainer-features
+ ociReference: ghcr.io/mamba-org/devcontainer-features
From 2777bfabd043900e02e08ddab366c71507f75d7b Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 3 Jan 2023 13:29:20 -0800
Subject: [PATCH 044/333] Features - Document 'deprecated' (#115)
---
_implementors/features.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/_implementors/features.md b/_implementors/features.md
index b32179a1..630d6523 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -51,6 +51,7 @@ The properties of the file are as follows:
| `entrypoint` | string | Set if the feature requires an "entrypoint" script that should fire at container start up. |
| `customizations` | object | Product specific properties, each namespace under `customizations` is treated as a separate set of properties. For each of this sets the object is parsed, values are replaced while arrays are set as a union. |
| `installsAfter` | array | Array of ID's of Features that should execute before this one. Allows control for feature authors on soft dependencies between different Features. |
+| `deprecated` | boolean | Indicates that the Feature is deprecated, and will not receive any further updates/support. This property is intended to be used by the supporting tools for highlighting Feature deprecation. |
{: .table .table-bordered .table-responsive}
### The `options` property
From 0eae45df8adb3fe7990fe8076944c03edeb2bc11 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 3 Jan 2023 14:28:46 -0800
Subject: [PATCH 045/333] Features - Document 'legacyIds' (#114)
* GH Pages - Document 'legacyIds'
* nit
---
_implementors/features.md | 41 +++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/_implementors/features.md b/_implementors/features.md
index 630d6523..167d2d79 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -51,6 +51,7 @@ The properties of the file are as follows:
| `entrypoint` | string | Set if the feature requires an "entrypoint" script that should fire at container start up. |
| `customizations` | object | Product specific properties, each namespace under `customizations` is treated as a separate set of properties. For each of this sets the object is parsed, values are replaced while arrays are set as a union. |
| `installsAfter` | array | Array of ID's of Features that should execute before this one. Allows control for feature authors on soft dependencies between different Features. |
+| `legacyIds` | array | Array of old IDs used to publish this Feature. The property is useful for renaming a currently published Feature within a single namespace. |
| `deprecated` | boolean | Indicates that the Feature is deprecated, and will not receive any further updates/support. This property is intended to be used by the supporting tools for highlighting Feature deprecation. |
{: .table .table-bordered .table-responsive}
@@ -362,6 +363,46 @@ Pip? false
Optimize? true
```
+### Steps to rename a Feature
+
+1. Update the Feature [source code](./features-distribution.md#source-code) folder and the `id` property in the [devcontainer-feature.json properties](#devcontainer-featurejson-properties) to reflect the new `id`. Other properties (`name`, `documentationUrl`, etc.) can optionally be updated during this step.
+2. Add or update the `legacyIds` property to the Feature, including the previously used `id`.
+3. Bump the semantic version of the Feature.
+4. Rerun the `devcontainer features publish` command, or equivalent tool that implements the [Features distribution specification](./features-distribution.md#distribution).
+
+#### Example: Renaming a Feature
+
+Let's say we currently have a `docker-from-docker` Feature 👇
+
+Current `devcontainer-feature.json` :
+
+```jsonc
+{
+ "id": "docker-from-docker",
+ "version": "2.0.1",
+ "name": "Docker (Docker-from-Docker)",
+ "documentationURL": "https://github.com/devcontainers/features/tree/main/src/docker-from-docker",
+ ....
+}
+```
+
+We'd want to rename this Feature to `docker-outside-of-docker`. The source code folder of the Feature will be updated to `docker-outside-of-docker` and the updated `devcontainer-feature.json` will look like 👇
+
+```jsonc
+{
+ "id": "docker-outside-of-docker",
+ "version": "2.0.2",
+ "name": "Docker (Docker-outside-of-Docker)",
+ "documentationURL": "https://github.com/devcontainers/features/tree/main/src/docker-outside-of-docker",
+ "legacyIds": [
+ "docker-from-docker"
+ ]
+ ....
+}
+```
+
+**Note** - The semantic version of the Feature defined by the `version` property should be **continued** and should not be restarted at `1.0.0`.
+
### Implementation notes
There are several things to keep in mind for an application that implements Features:
From a9c66f81f3249746d6d206908b52b6d34f2226a7 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Wed, 4 Jan 2023 14:26:11 -0800
Subject: [PATCH 046/333] Features list : Omit listing deprecated Features
(#120)
---
Gemfile.lock | 4 ++--
features.html | 14 ++++++++------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index 4d917c7d..f05bd56a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -225,7 +225,7 @@ DEPENDENCIES
tzinfo-data
RUBY VERSION
- ruby 2.7.6p219
+ ruby 2.7.7p221
BUNDLED WITH
- 2.3.24
+ 2.3.26
diff --git a/features.html b/features.html
index 9ade82e0..88f45683 100644
--- a/features.html
+++ b/features.html
@@ -25,12 +25,14 @@
Available Dev Container Featur
{% for c in site.data.devcontainer-index.collections %}
{% for f in c.features %}
-
+ {% endif %}
{% endfor %}
{% endfor %}
\ No newline at end of file
From 80c6f9caf71742f60e0c2f33f0d157ccd20571b9 Mon Sep 17 00:00:00 2001
From: Brigit Murtaugh
Date: Wed, 4 Jan 2023 14:37:10 -0800
Subject: [PATCH 047/333] Update reference.md (#121)
---
_implementors/reference.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/_implementors/reference.md b/_implementors/reference.md
index 0544432a..ef6a8250 100644
--- a/_implementors/reference.md
+++ b/_implementors/reference.md
@@ -39,6 +39,8 @@ Commands:
devcontainer build [path] Build a dev container image
devcontainer run-user-commands Run user commands
devcontainer read-configuration Read configuration
+ devcontainer features Features commands
+ devcontainer templates Templates commands
devcontainer exec [args..] Execute a command on a running dev container
Options:
From c65070b852a6b34ffbe54436961a4b0043ddf1ed Mon Sep 17 00:00:00 2001
From: Chuck Lantz
Date: Thu, 5 Jan 2023 16:33:38 -0800
Subject: [PATCH 048/333] Fix/add links, refresh image metadata description
(#122)
---
_implementors/json_reference.md | 2 +-
_implementors/reference.md | 29 ++++++++++++++++++-----------
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/_implementors/json_reference.md b/_implementors/json_reference.md
index 7cb3e2cb..9a1ba8df 100644
--- a/_implementors/json_reference.md
+++ b/_implementors/json_reference.md
@@ -8,7 +8,7 @@ index: 4
The `devcontainer.json` file contains any needed metadata and settings required to configurate a **development container** for a given well-defined tool and runtime stack. It can be used by [tools and services that support the dev container spec](../../supporting) to create a **development environment** that contains one or more **development containers**.
-Metadata properties marked with a 🏷️️ can be stored in the `devcontainer.metadata` **container image label** in addition to `devcontainer.json`. This label can contain an array of json snippets that will be automatically merged with `devcontainer.json` contents (if any) when a container is created.
+Metadata properties marked with a 🏷️️ can be stored in the `devcontainer.metadata` **[container image label](/implementors/reference/#labels)** in addition to `devcontainer.json`. This label can contain an array of json snippets that will be automatically merged with `devcontainer.json` contents (if any) when a container is created.
## General devcontainer.json properties
diff --git a/_implementors/reference.md b/_implementors/reference.md
index ef6a8250..b37fd9a7 100644
--- a/_implementors/reference.md
+++ b/_implementors/reference.md
@@ -104,22 +104,19 @@ These steps are also provided in the CLI repo's [README](https://github.com/devc
### Prebuilding
We recommend pre-building images with the tools you need rather than creating and building a container image each time you open your project in a dev container. Using pre-built images will result in a faster container startup, simpler configuration, and allows you to pin to a specific version of tools to improve supply-chain security and avoid potential breaks. You can automate pre-building your image by scheduling the build using a DevOps or continuous integration (CI) service like GitHub Actions.
-We recommend using the dev container CLI to pre-build your images. Once you've built your image, you can push it to a container registry (like the [Azure Container Registry](https://learn.microsoft.com/azure/container-registry/container-registry-get-started-docker-cli?tabs=azure-cli), [GitHub Container Registry](https://docs.github.com/packages/working-with-a-github-packages-registry/working-with-the-container-registry#pushing-container-images), or [Docker Hub](https://docs.docker.com/engine/reference/commandline/push)) and reference it directly.
+We recommend using the [Dev Container CLI](#npm-install) (or other spec supporting utilities like the [GitHub Action](https://github.com/marketplace/actions/devcontainers-ci) or [Azure DevOps task](https://marketplace.visualstudio.com/items?itemName=devcontainers.ci)) to pre-build your images. Once you've built your image, you can push it to a container registry (like the [Azure Container Registry](https://learn.microsoft.com/azure/container-registry/container-registry-get-started-docker-cli?tabs=azure-cli), [GitHub Container Registry](https://docs.github.com/packages/working-with-a-github-packages-registry/working-with-the-container-registry#pushing-container-images), or [Docker Hub](https://docs.docker.com/engine/reference/commandline/push)) and reference it directly.
-#### Metadata in image labels
-
-You can include dev container configuration and Feature metadata in prebuilt images via [image labels](https://docs.docker.com/config/labels-custom-metadata/), such that, the image and the built-in Features can be used with a devcontainer.json (image-, Dockerfile- or Docker Compose-based) that does not repeat the dev container config or Feature metadata. Other tools should be able to record the same metadata without necessarily using Features themselves.
-
-The metadata label is **automatically added** when you pre-build using the Dev Container CLI (or most Dev Container spec supporting tools) and includes settings from devcontainer.json and any referenced Dev Container Features.
+```bash
+devcontainer build --workspace-folder . --push true --image-name :
+```
-However, if you are using something else to build your images, you can opt to manually add properties to an image label instead. For example, consider this Dockerfile snippet:
+#### Metadata in image labels
-```Dockerfile
-LABEL devcontainer.metadata='[{ "capAdd": [ "SYS_PTRACE" ], "remoteUser": "devcontainer", "postCreateCommand": "yarn install" }]'
+You can include Dev Container configuration and Feature metadata in prebuilt images via [image labels](https://docs.docker.com/config/labels-custom-metadata/). This makes the image self-contained since these settings are automatically picked up when the image is referenced - whether directly, in a `FROM` in a referenced Dockerfile, or in a Docker Compose file. This helps prevent your Dev Container config and image contents from getting out of sync, and allows you to push updates of the same configuration to multiple repositories through a simple image reference.
-```
+This metadata label is **automatically added** when you pre-build using the [Dev Container CLI](#npm-install) (or other spec supporting utilities like the [GitHub Action](https://github.com/marketplace/actions/devcontainers-ci) or [Azure DevOps task](https://marketplace.visualstudio.com/items?itemName=devcontainers.ci)) and includes settings from devcontainer.json and any referenced Dev Container Features.
-In either case, the result will be merged with any local devcontainer.json content at the time you create the container (see the [the spec](https://github.com/devcontainers/spec/blob/main/proposals/image-metadata.md) for info on merge logic). But at its simplest, you can just reference the image directly in devcontainer.json for the settings to take effect:
+This allows you to have a separate **more complex** devcontainer.json you use to pre-build your image, and then a dramatically **simplified one** in one or more repositories. The contents of the image will be merged with this simplified devcontainer.json content at the time you create the container (see the [the spec](/implementors/spec/#merge-logic) for info on merge logic). But at its simplest, you can just reference the image directly in devcontainer.json for the settings to take effect:
```json
{
@@ -127,4 +124,14 @@ In either case, the result will be merged with any local devcontainer.json conte
}
```
+Note that you can also opt to you can opt to manually add metadata to an image label instead. These proprerties will be picked up even if you didn't use the Dev Container CLI to build (and can be updated by the CLI even if you do). For example, consider this Dockerfile snippet:
+
+```Dockerfile
+LABEL devcontainer.metadata='[{ \
+ "capAdd": [ "SYS_PTRACE" ], \
+ "remoteUser": "devcontainer", \
+ "postCreateCommand": "yarn install" \
+}]'
+```
+
See [Dev Container metadata reference](../json_reference) for information on which properties are supported.
From 59078935e38cbba615b7388847b557d6d7f23894 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oleksis=20Fraga=20Men=C3=A9ndez?=
<44526468+oleksis@users.noreply.github.com>
Date: Fri, 6 Jan 2023 12:35:58 -0500
Subject: [PATCH 049/333] Update Oleksis' Collection Dev Container Features
(#123)
---
_data/collection-index.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 22da1078..cb738f5f 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -158,11 +158,11 @@
contact: https://github.com/jsburckhardt/devcontainer-features/issues
repository: https://github.com/jsburckhardt/devcontainer-features
ociReference: ghcr.io/jsburckhardt/devcontainer-features
-- name: NAPPTIVE Playground CLI Features
+- name: Oleksis' Dev Container Features
maintainer: oleksis
- contact: https://github.com/oleksis/playground-cli/issues
- repository: https://github.com/oleksis/playground-cli
- ociReference: ghcr.io/oleksis/playground-cli
+ contact: https://github.com/oleksis/devcontainer-features/issues
+ repository: https://github.com/oleksis/devcontainer-features
+ ociReference: ghcr.io/oleksis/devcontainer-features
- name: Psibase templates
maintainer: James-Mart
contact: https://github.com/gofractally/psibase-devcontainer-template/issues
From 64764e1259a88aa112c570bc44515b6d4c24c6b7 Mon Sep 17 00:00:00 2001
From: Brigit Murtaugh
Date: Fri, 6 Jan 2023 09:53:16 -0800
Subject: [PATCH 050/333] Typo (#125)
---
_implementors/reference.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_implementors/reference.md b/_implementors/reference.md
index b37fd9a7..791b9e19 100644
--- a/_implementors/reference.md
+++ b/_implementors/reference.md
@@ -124,7 +124,7 @@ This allows you to have a separate **more complex** devcontainer.json you use to
}
```
-Note that you can also opt to you can opt to manually add metadata to an image label instead. These proprerties will be picked up even if you didn't use the Dev Container CLI to build (and can be updated by the CLI even if you do). For example, consider this Dockerfile snippet:
+Note that you can also opt to you can opt to manually add metadata to an image label instead. These properties will be picked up even if you didn't use the Dev Container CLI to build (and can be updated by the CLI even if you do). For example, consider this Dockerfile snippet:
```Dockerfile
LABEL devcontainer.metadata='[{ \
From eab6ffb669887d74141116676b59898bdb3d007d Mon Sep 17 00:00:00 2001
From: Faisal
Date: Fri, 6 Jan 2023 12:34:43 -0600
Subject: [PATCH 051/333] Add devcontainer feature for Astronomer (#126)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index cb738f5f..8945d55c 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -218,3 +218,8 @@
contact: https://github.com/mamba-org/devcontainer-features/issues
repository: https://github.com/mamba-org/devcontainer-features
ociReference: ghcr.io/mamba-org/devcontainer-features
+- name: Astronomer Features
+ maintainer: fhoda
+ contact: https://github.com/astronomer/devcontainer-features/issues
+ repository: https://github.com/astronomer/devcontainer-features
+ ociReference: ghcr.io/astronomer/devcontainer-features
From f41cb0034852b6be104fce317365a083e67b780d Mon Sep 17 00:00:00 2001
From: Maya Kaczorowski <15946341+mayakacz@users.noreply.github.com>
Date: Fri, 6 Jan 2023 11:44:31 -0800
Subject: [PATCH 052/333] Add Tailscale devcontainer feature (#119)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 8945d55c..b87f08b4 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -223,3 +223,8 @@
contact: https://github.com/astronomer/devcontainer-features/issues
repository: https://github.com/astronomer/devcontainer-features
ociReference: ghcr.io/astronomer/devcontainer-features
+- name: Tailscale devcontainer features
+ maintainer: DentonGentry
+ contact: https://github.com/tailscale/codespace/issues
+ repository: https://github.com/tailscale/codespace
+ ociReference: ghcr.io/tailscale/codespace/tailscale
From 2140f55dff5c349d69336ba6abebe11f04bf8ca0 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Fri, 6 Jan 2023 13:01:59 -0800
Subject: [PATCH 053/333] Revert "Add Tailscale devcontainer feature (#119)"
(#127)
This reverts commit f41cb0034852b6be104fce317365a083e67b780d.
---
_data/collection-index.yml | 5 -----
1 file changed, 5 deletions(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index b87f08b4..8945d55c 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -223,8 +223,3 @@
contact: https://github.com/astronomer/devcontainer-features/issues
repository: https://github.com/astronomer/devcontainer-features
ociReference: ghcr.io/astronomer/devcontainer-features
-- name: Tailscale devcontainer features
- maintainer: DentonGentry
- contact: https://github.com/tailscale/codespace/issues
- repository: https://github.com/tailscale/codespace
- ociReference: ghcr.io/tailscale/codespace/tailscale
From 150fc61d1fbb6cbddfd163c3c6e4b06eb8a589ad Mon Sep 17 00:00:00 2001
From: Matthieu FRONTON
Date: Mon, 9 Jan 2023 18:11:10 +0100
Subject: [PATCH 054/333] Fix broken link (#128)
Relative link leads to 404 error page : https://containers.dev/guide/implementors/json_reference/#image-specific
Absolute link is correct : https://containers.dev/implementors/json_reference/#image-specific
---
_posts/2022-12-16-dockerfile.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_posts/2022-12-16-dockerfile.md b/_posts/2022-12-16-dockerfile.md
index 556abe6f..687f13d5 100644
--- a/_posts/2022-12-16-dockerfile.md
+++ b/_posts/2022-12-16-dockerfile.md
@@ -38,7 +38,7 @@ Next, remove the `image` property from `devcontainer.json` (if it exists) and ad
}
```
-That's it! When you start up your Dev Container, the Dockerfile will be automatically built with no additional work. See [Dockerfile scenario reference](implementors/json_reference/#image-specific) for more information on other related devcontainer.json properties.
+That's it! When you start up your Dev Container, the Dockerfile will be automatically built with no additional work. See [Dockerfile scenario reference](/implementors/json_reference/#image-specific) for more information on other related devcontainer.json properties.
### Iterating on an image that includes Dev Container metadata
From a01196b187b9c92991a6d8c4c8b3d4c0b595fe1b Mon Sep 17 00:00:00 2001
From: Matthieu FRONTON
Date: Mon, 9 Jan 2023 18:13:14 +0100
Subject: [PATCH 055/333] Update collection-index.yml (#129)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 8945d55c..867b96dd 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -223,3 +223,8 @@
contact: https://github.com/astronomer/devcontainer-features/issues
repository: https://github.com/astronomer/devcontainer-features
ociReference: ghcr.io/astronomer/devcontainer-features
+- name: Testing Automation Features & more
+ maintainer: Matthieu Fronton
+ contact: https://github.com/frntn/devcontainers-features/issues
+ repository: https://github.com/frntn/devcontainers-features
+ ociReference: ghcr.io/frntn/devcontainers-features
From 559f0b0bcf5bbe5ff79733bc3134121cb267cc51 Mon Sep 17 00:00:00 2001
From: Eliise
Date: Mon, 9 Jan 2023 18:42:44 +0100
Subject: [PATCH 056/333] Add EliiseS/devcontainer features to the list (#124)
* Add EliiseS devcontainer features
* Use lower case
Co-authored-by: Samruddhi Khandale
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 867b96dd..79cd4baf 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -223,6 +223,11 @@
contact: https://github.com/astronomer/devcontainer-features/issues
repository: https://github.com/astronomer/devcontainer-features
ociReference: ghcr.io/astronomer/devcontainer-features
+- name: Devcontainer features by @EliiseS
+ maintainer: EliiseS
+ contact: https://github.com/EliiseS/devcontainer-features/issues
+ repository: https://github.com/EliiseS/devcontainer-features
+ ociReference: ghcr.io/eliises/devcontainer-features
- name: Testing Automation Features & more
maintainer: Matthieu Fronton
contact: https://github.com/frntn/devcontainers-features/issues
From e89095db4021989c00963e723c34f3982f4cdea0 Mon Sep 17 00:00:00 2001
From: Christian Sutter
Date: Tue, 10 Jan 2023 17:26:37 +0000
Subject: [PATCH 057/333] Add csutter's lightweight templates (#130)
- Adds `csutter/lightweight-devcontainer-templates` to the collection
of available devcontainer templates
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 79cd4baf..4e196dc0 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -233,3 +233,8 @@
contact: https://github.com/frntn/devcontainers-features/issues
repository: https://github.com/frntn/devcontainers-features
ociReference: ghcr.io/frntn/devcontainers-features
+- name: csutter's devcontainer templates
+ maintainer: csutter
+ contact: https://github.com/csutter/devcontainer-templates/issues
+ repository: https://github.com/csutter/devcontainer-templates
+ ociReference: ghcr.io/csutter/devcontainer-templates
From 3700b105dd8eb67ac89c02f6062ebfad0516f3fa Mon Sep 17 00:00:00 2001
From: Christopher MacGown
Date: Thu, 12 Jan 2023 09:04:53 -0800
Subject: [PATCH 058/333] Add ChristopherMacGown/devcontainer-features to the
collection index. (#131)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 4e196dc0..9f507cf6 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -238,3 +238,8 @@
contact: https://github.com/csutter/devcontainer-templates/issues
repository: https://github.com/csutter/devcontainer-templates
ociReference: ghcr.io/csutter/devcontainer-templates
+- name: Convenient features
+ maintainer: ChristopherMacGown
+ contact: https://github.com/ChristopherMacGown/devcontainer-features/issues
+ repository: https://github.com/ChristopherMacGown/devcontainer-features
+ ociReference: ghcr.io/christophermacgown/devcontainer-features
From 108492c98c303bca1e0d4e9fa4ae491f242963fb Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 17 Jan 2023 09:34:27 -0800
Subject: [PATCH 059/333] Features spec - Document 'mounts' property (#134)
* Features spec - Document 'mounts' property
* remove string support
* Update features.md
* Update features.md
---
_implementors/features.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/_implementors/features.md b/_implementors/features.md
index 167d2d79..b33120a8 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -53,6 +53,7 @@ The properties of the file are as follows:
| `installsAfter` | array | Array of ID's of Features that should execute before this one. Allows control for feature authors on soft dependencies between different Features. |
| `legacyIds` | array | Array of old IDs used to publish this Feature. The property is useful for renaming a currently published Feature within a single namespace. |
| `deprecated` | boolean | Indicates that the Feature is deprecated, and will not receive any further updates/support. This property is intended to be used by the supporting tools for highlighting Feature deprecation. |
+| `mounts` | object | Defaults to unset. Cross-orchestrator way to add additional mounts to a container. Each value is an object that accepts the same values as the [Docker CLI `--mount` flag](https://docs.docker.com/engine/reference/commandline/run/#add-bind-mounts-or-volumes-using-the---mount-flag). The Pre-defined [devcontainerId](/_implementors/json_reference.md#variables-in-devcontainerjson) variable may be referenced in the value. For example: `"mounts": [{ "source": "dind-var-lib-docker", "target": "/var/lib/docker", "type": "volume" }]` |
{: .table .table-bordered .table-responsive}
### The `options` property
From 9050980287d77829d9a66a19bee6d16d744c5603 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 17 Jan 2023 09:35:05 -0800
Subject: [PATCH 060/333] Update devcontainer.json schema - Adds
'overrideFeatureInstallOrder' (#133)
---
_implementors/json_schema.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/_implementors/json_schema.md b/_implementors/json_schema.md
index 9e83ed6a..05b2ce65 100644
--- a/_implementors/json_schema.md
+++ b/_implementors/json_schema.md
@@ -31,6 +31,13 @@ You may review the current devcontainer.json schemas in the spec repo, which inc
"description": "Features to add to the dev container.",
"additionalProperties": true
},
+ "overrideFeatureInstallOrder": {
+ "type": "array",
+ "description": "Array consisting of the Feature id (without the semantic version) of Features in the order the user wants them to be installed.",
+ "items": {
+ "type": "string"
+ }
+ },
"forwardPorts": {
"type": "array",
"description": "Ports that are forwarded from the container to the local machine. Can be an integer port number, or a string of the format \"host:port_number\".",
From 76c7fdf322e48e42ae1336a418f4aed3799c8acd Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 17 Jan 2023 09:35:13 -0800
Subject: [PATCH 061/333] Copy over spec changes for `installsAfter`
clarification (#132)
---
_implementors/features.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/_implementors/features.md b/_implementors/features.md
index b33120a8..4d2376d5 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -50,7 +50,7 @@ The properties of the file are as follows:
| `securityOpt` | array | Sets container security options like updating the [seccomp profile](https://docs.docker.com/engine/security/seccomp/) when the Feature is used. |
| `entrypoint` | string | Set if the feature requires an "entrypoint" script that should fire at container start up. |
| `customizations` | object | Product specific properties, each namespace under `customizations` is treated as a separate set of properties. For each of this sets the object is parsed, values are replaced while arrays are set as a union. |
-| `installsAfter` | array | Array of ID's of Features that should execute before this one. Allows control for feature authors on soft dependencies between different Features. |
+| `installsAfter` | array | Array of ID's of Features (omitting a version tag) that should execute before this one. Allows control for Feature authors on soft dependencies between different Features. |
| `legacyIds` | array | Array of old IDs used to publish this Feature. The property is useful for renaming a currently published Feature within a single namespace. |
| `deprecated` | boolean | Indicates that the Feature is deprecated, and will not receive any further updates/support. This property is intended to be used by the supporting tools for highlighting Feature deprecation. |
| `mounts` | object | Defaults to unset. Cross-orchestrator way to add additional mounts to a container. Each value is an object that accepts the same values as the [Docker CLI `--mount` flag](https://docs.docker.com/engine/reference/commandline/run/#add-bind-mounts-or-volumes-using-the---mount-flag). The Pre-defined [devcontainerId](/_implementors/json_reference.md#variables-in-devcontainerjson) variable may be referenced in the value. For example: `"mounts": [{ "source": "dind-var-lib-docker", "target": "/var/lib/docker", "type": "volume" }]` |
@@ -252,7 +252,7 @@ If any of the following properties are provided in the Feature's `devcontainer-f
This property is declared by the user in their `devcontainer.json` file.
-Any un-versioned feature IDs listed in this array will be installed before all other Features, in the provided order. Any omitted Features will be installed in an order selected by the implementing tool, or ordered via the `installsAfter` property _after_ any Features listed in the `overrideFeatureInstallOrder` array, if applicable.
+Any **un-versioned** Feature IDs listed in this array will be installed before all other Features, in the provided order. Any omitted Features will be installed in an order selected by the implementing tool, or ordered via the `installsAfter` property _after_ any Features listed in the `overrideFeatureInstallOrder` array, if applicable.
All un-versioned Feature `id`s provided in `overrideFeatureInstallOrder` must also exist in the `features` property of a user's `devcontainer.json`. For instance, all the Features which follows the OCI registry format would include everything except for the label that contains the version (`//` without the `:`).
@@ -274,13 +274,15 @@ Example:
#### (2) The `installsAfter` Feature property
-This property is defined in an individual Feature's `devcontainer-feature.json` file by the feature author. `installsAfter` allows an author to provide the tooling hints on loose dependencies between Features.
+This property is defined in an individual feature's `devcontainer-feature.json` file by the feature author. `installsAfter` allows an author to provide the tooling hints on loose dependencies between Features.
+
+> This property is mostly useful for optimizing build time (by reordering the Feature installation to reduce installing a required CLI twice, for example). Ideally, all Features should be able to fully install themselves without requiring another Feature to be pre-installed.
After `overrideFeatureInstallOrder` is resolved, any remaining Features that declare an `installsAfter` must be installed after the Features declared in the property, provided that the features have also been declared in the `features` property.
| Property | Type | Description |
| :--- | :--- | :--- |
-| `installsAfter` | array | Array consisting of the Feature `id` that should be installed before the given Feature. |
+| `installsAfter` | array | Array consisting of the Feature `id` (omitting a version tag) that should be installed before the given Feature |
{: .table .table-bordered .table-responsive}
### Option Resolution
From 95afbf0e42e4f50f19d5e7140cb6d0be318db36a Mon Sep 17 00:00:00 2001
From: Josh Spicer
Date: Wed, 18 Jan 2023 14:54:32 -0800
Subject: [PATCH 062/333] Joshspicer/feature schema (#135)
* Add link to spec of devcontainer-feature.json schema
https://github.com/devcontainers/spec/issues/140
* capitalize Feature
---
_implementors/features.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/_implementors/features.md b/_implementors/features.md
index 4d2376d5..de401903 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -29,7 +29,9 @@ A Feature is a self contained entity in a folder with at least a `devcontainer-f
## devcontainer-feature.json properties
-the `devcontainer-feature.json` file defines information about the feature to be used by any supporting tools and the way the Feature will be executed.
+The `devcontainer-feature.json` file defines information about the Feature to be used by any supporting tools and the way the Feature will be executed.
+
+[devContainerFeature.schema.json](https://github.com/devcontainers/spec/blob/main/schemas/devContainerFeature.schema.json) defines the schema for the `devcontainer-feature.json` file.
The properties of the file are as follows:
From f499f61712309041e9c2b4b676a47b2960ed16a4 Mon Sep 17 00:00:00 2001
From: Marcel Lupo
Date: Thu, 19 Jan 2023 17:57:39 +0000
Subject: [PATCH 063/333] Update collection-index.yml - Add GitHub Actions
runner devcontainer template (#137)
* Update collection-index.yml
Add GH-runner devcontainer template
* Update collection-index.yml
remove '.'
* Update collection-index.yml
Update maintainer name
* Update _data/collection-index.yml
Thank you, made to lowercase :)
Co-authored-by: Samruddhi Khandale
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 9f507cf6..0d10a63e 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -243,3 +243,8 @@
contact: https://github.com/ChristopherMacGown/devcontainer-features/issues
repository: https://github.com/ChristopherMacGown/devcontainer-features
ociReference: ghcr.io/christophermacgown/devcontainer-features
+ - name: Pwd9000-ML devcontainer templates
+ maintainer: Marcel Lupo @Pwd9000-ML
+ contact: https://github.com/Pwd9000-ML/devcontainer-templates/issues
+ repository: https://github.com/Pwd9000-ML/devcontainer-templates
+ ociReference: ghcr.io/pwd9000-ml/devcontainer-templates
From b1a6b14e48d3f55f593fb9e33a2c6c3759d17497 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Thu, 19 Jan 2023 10:15:21 -0800
Subject: [PATCH 064/333] Fix YAMLParseError for collection-inde.yml (#139)
---
_data/collection-index.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 0d10a63e..41884305 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -243,7 +243,7 @@
contact: https://github.com/ChristopherMacGown/devcontainer-features/issues
repository: https://github.com/ChristopherMacGown/devcontainer-features
ociReference: ghcr.io/christophermacgown/devcontainer-features
- - name: Pwd9000-ML devcontainer templates
+- name: Pwd9000-ML devcontainer templates
maintainer: Marcel Lupo @Pwd9000-ML
contact: https://github.com/Pwd9000-ML/devcontainer-templates/issues
repository: https://github.com/Pwd9000-ML/devcontainer-templates
From 028b1f155e5bdc8a99786542aef86603f47b8a77 Mon Sep 17 00:00:00 2001
From: Mikael Ahlinder
Date: Mon, 23 Jan 2023 18:14:03 +0100
Subject: [PATCH 065/333] Add features for mickeahlinder (#141)
Currently only contains a feature for installing the `tfenv` Terraform version
manager.
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 41884305..9b72516c 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -248,3 +248,8 @@
contact: https://github.com/Pwd9000-ML/devcontainer-templates/issues
repository: https://github.com/Pwd9000-ML/devcontainer-templates
ociReference: ghcr.io/pwd9000-ml/devcontainer-templates
+- name: mickeahlinder devcontainer features
+ maintainer: Mikael Ahlinder
+ contact: https://github.com/mickeahlinder/devcontainer-features/issues
+ repository: https://github.com/mickeahlinder/devcontainer-features
+ ociReference: ghcr.io/mickeahlinder/devcontainer-features
\ No newline at end of file
From 19155527a7851e11de4a9511790f24322e921920 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 24 Jan 2023 10:09:04 -0800
Subject: [PATCH 066/333] Update description of `build.cacheFrom` (#142)
---
_implementors/json_reference.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_implementors/json_reference.md b/_implementors/json_reference.md
index 9a1ba8df..370f1589 100644
--- a/_implementors/json_reference.md
+++ b/_implementors/json_reference.md
@@ -49,7 +49,7 @@ The focus of `devcontainer.json` is to describe how to enrich a container for th
| `build.context` | string | Path that the Docker build should be run from relative to `devcontainer.json`. For example, a value of `".."` would allow you to reference content in sibling directories. Defaults to `"."`. |
| `build.args` | Object | A set of name-value pairs containing [Docker image build arguments](https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg) that should be passed when building a Dockerfile. Environment and [pre-defined variables](#variables-in-devcontainerjson) may be referenced in the values. Defaults to not set. For example: `"build": { "args": { "MYARG": "MYVALUE", "MYARGFROMENVVAR": "${localEnv:VARIABLE_NAME}" } }` |
| `build.target` | string | A string that specifies a [Docker image build target](https://docs.docker.com/engine/reference/commandline/build/#specifying-target-build-stage---target) that should be passed when building a Dockerfile. Defaults to not set. For example: `"build": { "target": "development" }` |
-| `build.cacheFrom` | string, array | A string or array of strings that specify one or more images to use as caches when building the image. Cached image identifiers are passed to the `docker build` command with `--cache-from`. Note that the array syntax will execute the command without a shell. You can [learn more](#formatting-string-vs-array-properties) about formatting string vs array properties. |
+| `build.cacheFrom` | string, array | A string or array of strings that specify one or more images to use as caches when building the image. Cached image identifiers are passed to the `docker build` command with `--cache-from`. |
| `appPort` | integer, string, array | In most cases, we recommend using the new [forwardPorts property](#general-properties). This property accepts a port or array of ports that should be published locally when the container is running.Unlike `forwardPorts`, your application may need to listen on all interfaces (`0.0.0.0`) not just `localhost` for it to be available externally. Defaults to `[]`. Learn more about publishing vs forwarding ports [here](#publishing-vs-forwarding-ports). Note that the array syntax will execute the command without a shell. You can [learn more](#formatting-string-vs-array-properties) about formatting string vs array properties. |
| `workspaceMount` | string | Requires `workspaceFolder` be set as well. Overrides the default local mount point for the workspace when the container is created. Supports the same values as the [Docker CLI `--mount` flag](https://docs.docker.com/engine/reference/commandline/run/#add-bind-mounts-or-volumes-using-the---mount-flag). Environment and [pre-defined variables](#variables-in-devcontainerjson) may be referenced in the value. For example: `"workspaceMount": "source=${localWorkspaceFolder}/sub-folder,target=/workspace,type=bind,consistency=cached", "workspaceFolder": "/workspace"` |
| `workspaceFolder` | string | Requires `workspaceMount` be set. Sets the default path that `devcontainer.json` supporting services / tools should open when connecting to the container. Defaults to the automatic source code mount location. |
From 971fa632a504f02d3bae78698072b09e28b7829d Mon Sep 17 00:00:00 2001
From: Balazs Nagy
Date: Tue, 24 Jan 2023 19:10:45 +0100
Subject: [PATCH 067/333] Add Balazs's features to collection (#138)
* Add Balazs's features to collection
I've made two features (bezel, nx) what I was missing from the feature list
* reference typo fix
---
_data/collection-index.yml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 9b72516c..22b36e6f 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -243,6 +243,11 @@
contact: https://github.com/ChristopherMacGown/devcontainer-features/issues
repository: https://github.com/ChristopherMacGown/devcontainer-features
ociReference: ghcr.io/christophermacgown/devcontainer-features
+- name: Devcontainer features by @Balazs
+ maintainer: Balazs23
+ contact: https://github.com/Balazs23/devcontainers-features/issues
+ repository: https://github.com/Balazs23/devcontainers-features
+ ociReference: ghcr.io/balazs23/devcontainers-features
- name: Pwd9000-ML devcontainer templates
maintainer: Marcel Lupo @Pwd9000-ML
contact: https://github.com/Pwd9000-ML/devcontainer-templates/issues
@@ -252,4 +257,4 @@
maintainer: Mikael Ahlinder
contact: https://github.com/mickeahlinder/devcontainer-features/issues
repository: https://github.com/mickeahlinder/devcontainer-features
- ociReference: ghcr.io/mickeahlinder/devcontainer-features
\ No newline at end of file
+ ociReference: ghcr.io/mickeahlinder/devcontainer-features
From eb558d020e764fe6e86720359550083f0ef00611 Mon Sep 17 00:00:00 2001
From: James C Kimble Jr
Date: Wed, 25 Jan 2023 11:48:03 -0600
Subject: [PATCH 068/333] Add jckimble to collection-index.yml (#143)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 22b36e6f..10f1d37e 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -258,3 +258,8 @@
contact: https://github.com/mickeahlinder/devcontainer-features/issues
repository: https://github.com/mickeahlinder/devcontainer-features
ociReference: ghcr.io/mickeahlinder/devcontainer-features
+- name: jckimble Dev Container / Codespaces Features
+ maintainer: James C Kimble Jr
+ contact: https://github.com/jckimble/devcontainer-features/issues
+ repository: https://github.com/jckimble/devcontainer-features
+ ociReference: ghcr.io/jckimble/devcontainer-features
From 233fd92d8e3a75b0bdcce3d252064e05f0087528 Mon Sep 17 00:00:00 2001
From: NicoVIII
Date: Wed, 25 Jan 2023 19:16:43 +0100
Subject: [PATCH 069/333] Remove pnpm, it was moved to devcontainers-contrib
(#144)
Like discussed here, pnpm was moved into devcontainers-contrib:
https://github.com/devcontainers-contrib/features/issues/265
The old repository can be removed from the index to avoid the duplicate listing of pnpm. The one in devcontainers-contrib should be used from now on.
---
_data/collection-index.yml | 5 -----
1 file changed, 5 deletions(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 10f1d37e..664d0620 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -88,11 +88,6 @@
contact: https://github.com/joshspicer/features/issues
repository: https://github.com/joshspicer/features
ociReference: ghcr.io/joshspicer/features
-- name: pnpm (requires npm)
- maintainer: NicoVIII
- contact: https://github.com/NicoVIII/devcontainer-features/issues
- repository: https://github.com/NicoVIII/devcontainer-features
- ociReference: ghcr.io/NicoVIII/devcontainer-features
- name: PHP Features
maintainer: Shyim
contact: https://github.com/shyim/devcontainers-features/issues
From 5d2586d45866787583f01225856827090546ea73 Mon Sep 17 00:00:00 2001
From: Torben Wetter
Date: Wed, 25 Jan 2023 21:10:11 +0100
Subject: [PATCH 070/333] Add IU LaTeX Container Templates (#145)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 664d0620..19cdda28 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -258,3 +258,8 @@
contact: https://github.com/jckimble/devcontainer-features/issues
repository: https://github.com/jckimble/devcontainer-features
ociReference: ghcr.io/jckimble/devcontainer-features
+- name: IU LaTeX Container Templates
+ maintainer: Torben Wetter
+ contact: https://github.com/TorbenWetter/iu-latex-container-templates/issues
+ repository: https://github.com/TorbenWetter/iu-latex-container-templates
+ ociReference: ghcr.io/torbenwetter/iu-latex-container-templates
From aea245d0b7328f8297268ee816e1973018ec7a41 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Tue, 31 Jan 2023 11:36:44 -0800
Subject: [PATCH 071/333] Fix broken link to 'Locally Referenced Addendum'
(#140)
---
_implementors/features.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_implementors/features.md b/_implementors/features.md
index de401903..c1526c59 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -207,7 +207,7 @@ The `id` format specified dicates how a supporting tool will locate and download
(*) OCI registry must implement the [OCI Artifact Distribution Specification](https://github.com/opencontainers/distribution-spec). Some implementors can be [found here](https://oras.land/implementors/).
-(**) The provided path is always relative to the folder containing the `devcontainer.json`. Further requirements are outlined in the [Locally Referenced Addendum](devcontainer-features-distribution#Addendum:-Locally-Referenced).
+(**) The provided path is always relative to the folder containing the `devcontainer.json`. Further requirements are outlined in the [Locally Referenced Addendum](../features-distribution#addendum-locally-referenced).
## Versioning
From 013fc6c99af9895a49c1b5a65892f373ba333bde Mon Sep 17 00:00:00 2001
From: Israel <70794050+Standard-IO@users.noreply.github.com>
Date: Mon, 6 Feb 2023 17:01:03 -0600
Subject: [PATCH 072/333] entry added to index (#146)
* entry added to index
* Update _data/collection-index.yml
Co-authored-by: Samruddhi Khandale
---------
Co-authored-by: standardio
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 19cdda28..0c9736d8 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -263,3 +263,8 @@
contact: https://github.com/TorbenWetter/iu-latex-container-templates/issues
repository: https://github.com/TorbenWetter/iu-latex-container-templates
ociReference: ghcr.io/torbenwetter/iu-latex-container-templates
+- name: Python3 with Pyenv and Poetry
+ maintainer: Israel Rescalvo
+ contact: https://github.com/Standard-IO/devcontainers-templates/issues
+ repository: https://github.com/Standard-IO/devcontainers-templates
+ ociReference: ghcr.io/standard-io/devcontainers-templates
From a563c767bc262b03fadc00c8c61cee6cd09c5b10 Mon Sep 17 00:00:00 2001
From: Kenji Brameld
Date: Thu, 9 Feb 2023 13:54:24 -0600
Subject: [PATCH 073/333] Add index for ROS (#147)
* Add index for ROS
* Update collection-index.yml
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 0c9736d8..87c88194 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -268,3 +268,8 @@
contact: https://github.com/Standard-IO/devcontainers-templates/issues
repository: https://github.com/Standard-IO/devcontainers-templates
ociReference: ghcr.io/standard-io/devcontainers-templates
+- name: ROS Templates
+ maintainer: Kenji Brameld
+ contact: https://github.com/ijnek/ros-devcontainer-template/issues
+ repository: https://github.com/ijnek/ros-devcontainer-template
+ ociReference: ghcr.io/ijnek/ros-devcontainer-template
From 26b496be68146ae0aaf1a7bba5f3c6f542752310 Mon Sep 17 00:00:00 2001
From: Naresh Sikha <3207964+r3dpoint@users.noreply.github.com>
Date: Thu, 9 Feb 2023 13:02:06 -0800
Subject: [PATCH 074/333] Tailwindcss Standalone CLI (#148)
* Tailwindcss Standalone CLI
Adding non-official Tailwindcss Standalone CLI devcontainer feature to the registry.
* Update _data/collection-index.yml
Co-authored-by: Samruddhi Khandale
---------
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 87c88194..a51eba56 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -273,3 +273,8 @@
contact: https://github.com/ijnek/ros-devcontainer-template/issues
repository: https://github.com/ijnek/ros-devcontainer-template
ociReference: ghcr.io/ijnek/ros-devcontainer-template
+- name: Assorted Features
+ maintainer: r3dpoint
+ contact: https://github.com/r3dpoint/devcontainer-features/issues
+ repository: https://github.com/r3dpoint/devcontainer-features
+ ociReference: ghcr.io/r3dpoint/devcontainer-features
\ No newline at end of file
From a43650b73e270484c1770ef5b90542c7e84b3b53 Mon Sep 17 00:00:00 2001
From: Adam Fowler
Date: Mon, 13 Feb 2023 18:48:12 +0100
Subject: [PATCH 075/333] Add Swift devcontainer template (#150)
---
_data/collection-index.yml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index a51eba56..eee399ca 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -277,4 +277,9 @@
maintainer: r3dpoint
contact: https://github.com/r3dpoint/devcontainer-features/issues
repository: https://github.com/r3dpoint/devcontainer-features
- ociReference: ghcr.io/r3dpoint/devcontainer-features
\ No newline at end of file
+ ociReference: ghcr.io/r3dpoint/devcontainer-features
+- name: Swift Container Templates
+ maintainer: Swift Server Workgroup
+ contact: https://github.com/swift-server/swift-devcontainer-template/issues
+ repository: https://github.com/swift-server/swift-devcontainer-template
+ ociReference: ghcr.io/swift-server/swift-devcontainer-template
\ No newline at end of file
From b0567c2c41b8cfad4f0f89c22dfe03d653d583be Mon Sep 17 00:00:00 2001
From: Brigit Murtaugh
Date: Tue, 14 Feb 2023 22:21:23 +0000
Subject: [PATCH 076/333] Update templates-distribution.md (#152)
---
_implementors/templates-distribution.md | 68 +++++++++++++++++++++++--
1 file changed, 63 insertions(+), 5 deletions(-)
diff --git a/_implementors/templates-distribution.md b/_implementors/templates-distribution.md
index b80e0a08..81b65242 100644
--- a/_implementors/templates-distribution.md
+++ b/_implementors/templates-distribution.md
@@ -64,16 +64,13 @@ Tooling that handles publishing Templates will not republish Templates if that e
## Packaging
-
Templates are distributed as tarballs. The tarball contains the entire contents of the Template sub-directory, including the `devcontainer-template.json`, `.devcontainer.json` (or `.devcontainer/devcontainer.json`), and any other files in the directory.
The tarball is named `devcontainer-template-.tgz`, where `` is the Templates's `id` field.
A reference implementation for packaging and distributing Templates is provided as a GitHub Action (https://github.com/devcontainers/action).
-
-
-### devcontainer-collection.json
+### devcontainer-collection.json
The `devcontainer-collection.json` is an auto-generated metadata file.
@@ -133,4 +130,65 @@ NAMESPACE=devcontainers/templates
oras push ${REGISTRY}/${NAMESPACE}:latest \
--manifest-config /dev/null:application/vnd.devcontainers \
./devcontainer-collection.json:application/vnd.devcontainers.collection.layer.v1+json
-```
\ No newline at end of file
+```
+
+## Guide to publishing Templates
+
+The dev container CLI can be used to publish [Dev Container Template](https://containers.dev/implementors/templates/) artifacts to an OCI registry (that supports the [artifacts specification](https://oras.land/implementors/)).
+
+To see all the available options, run `devcontainers templates publish --help`.
+
+## Example
+
+Given a directory that is organized according to the [Templates distribution specification](https://containers.dev/implementors/templates-distribution/) - for example:
+
+```
+├── src
+│ ├── color
+│ │ ├── devcontainer-template.json
+│ │ └──| .devcontainer
+│ │ └── devcontainer.json
+│ ├── hello
+│ │ ├── devcontainer-template.json
+│ │ └──| .devcontainer
+│ │ ├── devcontainer.json
+│ │ └── Dockerfile
+| ├── ...
+│ │ ├── devcontainer-template.json
+│ │ └──| .devcontainer
+│ │ └── devcontainer.json
+├── test
+│ ├── color
+│ │ └── test.sh
+│ ├── hello
+│ │ └── test.sh
+│ └──test-utils
+│ └── test-utils.sh
+...
+```
+
+The following command will publish each Template above (`color,hello`) to the registry `ghcr.io` with the following namespace (prefix) `devcontainers/templates`.
+
+```
+[/tmp]$ GITHUB_TOKEN="$CR_PAT" devcontainer templates publish -r ghcr.io -n devcontainers/templates ./src
+```
+
+To later apply a published Template (in the example below, the `color` template) with the CLI, the following `apply` command would be used:
+
+```
+[/tmp]$ devcontainer templates apply \
+ -t 'ghcr.io/devcontainers/templates/color' \
+ -a '{"favorite": "red"}'
+```
+
+### Authentication Methods
+
+> NOTE: OS-specific docker credential helpers (Docker Desktop credential helper) are not currently recognized by the CLI.
+- Adding a $HOME/.docker/config.json with your credentials following [this commonly defined format](https://www.systutorials.com/docs/linux/man/5-docker-config-json/).
+ - Your `docker login` command may write this file for you depending on your operating system.
+- Using our custom env variable DEVCONTAINERS_OCI_AUTH
+ - eg: `DEVCONTAINERS_OCI_AUTH=service1|user1|token1,service2|user2|token2`
+
+For publishing to `ghcr.io`
+- Using the `devcontainers/action` GitHub action to handle the `GITHUB_TOKEN` credential for you.
+- Providing a GITHUB_TOKEN with permission to `write:packages`.
From b8e8c84c7719548718f5ae6bf8b5f876c60b1db1 Mon Sep 17 00:00:00 2001
From: Hamish Cox <20359560+HamishWHC@users.noreply.github.com>
Date: Thu, 16 Feb 2023 04:15:42 +1100
Subject: [PATCH 077/333] Add UNSW COMP3231 OS Development Template (#153)
* Update collection-index.yml
* Update _data/collection-index.yml
Co-authored-by: Samruddhi Khandale
---------
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index eee399ca..85d797e9 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -282,4 +282,9 @@
maintainer: Swift Server Workgroup
contact: https://github.com/swift-server/swift-devcontainer-template/issues
repository: https://github.com/swift-server/swift-devcontainer-template
- ociReference: ghcr.io/swift-server/swift-devcontainer-template
\ No newline at end of file
+ ociReference: ghcr.io/swift-server/swift-devcontainer-template
+- name: UNSW cs3231 OS Development
+ maintainer: Hamish Cox
+ contact: https://github.com/HamishWHC/cs3231-devcontainer/issues
+ repository: https://github.com/HamishWHC/cs3231-devcontainer
+ ociReference: ghcr.io/hamishwhc/cs3231-devcontainer
From c335352e8d60d84978141db6e2ccd7000b963a1f Mon Sep 17 00:00:00 2001
From: Akhil
Date: Thu, 16 Feb 2023 22:36:05 +0530
Subject: [PATCH 078/333] Patch 1 (#154)
* Android SDK Tools and Apt packages
* fix
---
_data/collection-index.yml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 85d797e9..057f5b5e 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -283,8 +283,13 @@
contact: https://github.com/swift-server/swift-devcontainer-template/issues
repository: https://github.com/swift-server/swift-devcontainer-template
ociReference: ghcr.io/swift-server/swift-devcontainer-template
+- name: Android SDK Tools and Apt packages
+ maintainer: @akhildevelops
+ contact: https://github.com/akhildevelops/devcontainer-features/issues
+ repository: https://github.com/akhildevelops/devcontainer-features
+ ociReference: ghcr.io/akhildevelops/devcontainer-features
- name: UNSW cs3231 OS Development
maintainer: Hamish Cox
contact: https://github.com/HamishWHC/cs3231-devcontainer/issues
repository: https://github.com/HamishWHC/cs3231-devcontainer
- ociReference: ghcr.io/hamishwhc/cs3231-devcontainer
+ ociReference: ghcr.io/hamishwhc/cs3231-devcontainer
\ No newline at end of file
From 019129911c561110c76b2931ed27e3d63e3e2620 Mon Sep 17 00:00:00 2001
From: Samruddhi Khandale
Date: Thu, 16 Feb 2023 09:28:07 -0800
Subject: [PATCH 079/333] Update collection-index (#155)
---
_data/collection-index.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 057f5b5e..f1bdda4d 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -284,7 +284,7 @@
repository: https://github.com/swift-server/swift-devcontainer-template
ociReference: ghcr.io/swift-server/swift-devcontainer-template
- name: Android SDK Tools and Apt packages
- maintainer: @akhildevelops
+ maintainer: akhildevelops
contact: https://github.com/akhildevelops/devcontainer-features/issues
repository: https://github.com/akhildevelops/devcontainer-features
ociReference: ghcr.io/akhildevelops/devcontainer-features
From 099aea3f4f8b856c5ed56b0237c5d35815fe040e Mon Sep 17 00:00:00 2001
From: Brigit Murtaugh
Date: Fri, 17 Feb 2023 15:09:36 -0800
Subject: [PATCH 080/333] Cleanup pass (#156)
* Update reference.md
* Update spec.md
* Update json_reference.md
* Update templates.md
* Update templates-distribution.md
* Update contributing.md
* Update features.md
* Update features-distribution.md
* Update features.md
* Update features-distribution.md
* Update templates.md
* Update templates-distribution.md
* Update supporting.md
* Update features.md
* Update features-distribution.md
---
_implementors/contributing.md | 2 +-
_implementors/features-distribution.md | 4 +-
_implementors/features.md | 16 ++++----
_implementors/json_reference.md | 2 +-
_implementors/reference.md | 4 +-
_implementors/spec.md | 9 ++---
_implementors/templates-distribution.md | 5 ++-
_implementors/templates.md | 50 +++++++++++++------------
supporting.md | 3 +-
9 files changed, 47 insertions(+), 48 deletions(-)
diff --git a/_implementors/contributing.md b/_implementors/contributing.md
index 66bd95cc..af94fa40 100644
--- a/_implementors/contributing.md
+++ b/_implementors/contributing.md
@@ -3,7 +3,7 @@ layout: implementors
title: "How to contribute to the Development Container Specification"
shortTitle: "Contributing"
author: Microsoft
-index: 8
+index: 9
---
We're excited for your contributions to the Dev Container Specification! This document outlines how you can get involved.
diff --git a/_implementors/features-distribution.md b/_implementors/features-distribution.md
index 45ac4231..fa1b5aa0 100644
--- a/_implementors/features-distribution.md
+++ b/_implementors/features-distribution.md
@@ -17,7 +17,7 @@ Goals include:
- For users, provide the ability for a user to pin to a particular version (absolute, or semantic version) of a Feature to allow for consistent, repeatable environments.
- Provide the ability to standardize publishing such that [supporting tools](../../supporting) may implement their own mechanism to aid Feature discoverability as they see fit.
-> **Tip:** This section covers details on the Features specification. If you are looking for summarized information on creating your own Features, see the [template](https://github.com/devcontainers/feature-template) and [core Features](https://github.com/devcontainers/features) repositories.
+> **Tip:** This section covers details on the Features specification. If you are looking for summarized information on creating your own Features, check out the [quick start](https://github.com/devcontainers/feature-starter) and [core Features](https://github.com/devcontainers/features) repositories.
## Source Code
@@ -71,7 +71,7 @@ Features are distributed as tarballs. The tarball contains the entire contents o
The tarball is named `devcontainer-feature-.tgz`, where `` is the Feature's `id` field.
-A reference implementation for packaging and distributing Features is provided as a GitHub Action (https://github.com/devcontainers/action).
+A reference implementation for packaging and distributing Features is provided as a [GitHub Action](https://github.com/devcontainers/action).
### devcontainer-collection.json
diff --git a/_implementors/features.md b/_implementors/features.md
index c1526c59..259e28b0 100644
--- a/_implementors/features.md
+++ b/_implementors/features.md
@@ -8,13 +8,11 @@ index: 5
Development container "Features" are self-contained, shareable units of installation code and development container configuration. The name comes from the idea that referencing one of them allows you to quickly and easily add more tooling, runtime, or library "Features" into your development container for you or your collaborators to use.
-> **Note:** While Features may be installed on top of any base image, the implementation of a Feature might restrict it to a subset of possible base images.
->
-> For example, some Features may be authored to work with a certain linux distro (e.g. debian-based images that use the `apt` package manager).
-
Feature metadata is captured by a `devcontainer-feature.json` file in the root folder of the feature.
-> **Tip:** This section covers details on the Features specification. If you are looking for summarized information on creating your own Features, see the [template](https://github.com/devcontainers/feature-template) and [core Features](https://github.com/devcontainers/features) repositories.
+> **Note:** While Features may be installed on top of any base image, the implementation of a Feature might restrict it to a subset of possible base images. For example, some Features may be authored to work with a certain Linux distro (e.g. debian-based images that use the `apt` package manager).
+>
+> This section covers details on the Features specification. If you are looking for summarized information on creating your own Features, check out the [quick start](https://github.com/devcontainers/feature-starter) and [core Features](https://github.com/devcontainers/features) repositories.
## Folder Structure
@@ -175,11 +173,11 @@ Below is a valid `features` object provided as an example.
}
```
-> Note: 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.
+> **Note:** 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.
An option's value can be provided as either a `string` or `boolean`, and should match what is expected by the feature in the `devcontainer-feature.json` file.
-As a shorthand, the value of a `feature` can be provided as a single string. This string is mapped to an option called `version`. In the example below, both examples are equivalent.
+As a shorthand, the value of the `features` property can be provided as a single string. This string is mapped to an option called `version`. In the example below, both examples are equivalent.
```jsonc
"features": {
@@ -217,7 +215,7 @@ Tooling that handles releasing Features will not republish Features if that exac
## Authoring
-Features can be authored in a number of languages, the most straightforward being bash scripts. If a Feature is authored in a different language information about it should be included in the metadata so that users can make an informed choice about it.
+Features can be authored in a number of languages, the most straightforward being bash scripts. If a Feature is authored in a different language, information about it should be included in the metadata so that users can make an informed choice about it.
Reference information about the application required to execute the Feature should be included in `devcontainer-feature.json` in the metadata section.
@@ -227,7 +225,7 @@ If the Feature is included in a folder as part of the repository that contains `
## Release
-_For information on distributing Features, see [the dev container features distribution page](../features-distribution)._
+_For information on distributing Features, see [the dev container Features distribution page](../features-distribution)._
## Execution
diff --git a/_implementors/json_reference.md b/_implementors/json_reference.md
index 370f1589..bfd0cd6f 100644
--- a/_implementors/json_reference.md
+++ b/_implementors/json_reference.md
@@ -172,7 +172,7 @@ Variables can be referenced in certain string values in `devcontainer.json` in t
| `${devcontainerId}` | Any | Identifier derived from a set of container labels that uniquely idenity the dev container on a Docker host. It allows Features to refer to an identifier that is unique to the dev container they are installed into and that is stable across rebuilds. The properties supporting it in devcontainer.json are: `name`, `runArgs`, `initializeCommand`, `onCreateCommand`, `updateContentCommand`, `postCreateCommand`, `postStartCommand`, `postAttachCommand`, `workspaceFolder`, `workspaceMount`, `mounts`, `containerEnv`, `remoteEnv`, `containerUser`, `remoteUser`, and `customizations`. |
{: .table .table-bordered .table-responsive}
-## Schema
+## Schema
You can see the VS Code implementation of the dev container schema [here](https://github.com/microsoft/vscode/blob/main/extensions/configuration-editing/schemas/devContainer.schema.src.json).
diff --git a/_implementors/reference.md b/_implementors/reference.md
index 791b9e19..9442ca36 100644
--- a/_implementors/reference.md
+++ b/_implementors/reference.md
@@ -124,7 +124,7 @@ This allows you to have a separate **more complex** devcontainer.json you use to
}
```
-Note that you can also opt to you can opt to manually add metadata to an image label instead. These properties will be picked up even if you didn't use the Dev Container CLI to build (and can be updated by the CLI even if you do). For example, consider this Dockerfile snippet:
+Note that you can also opt to manually add metadata to an image label instead. These properties will be picked up even if you didn't use the Dev Container CLI to build (and can be updated by the CLI even if you do). For example, consider this Dockerfile snippet:
```Dockerfile
LABEL devcontainer.metadata='[{ \
@@ -134,4 +134,4 @@ LABEL devcontainer.metadata='[{ \
}]'
```
-See [Dev Container metadata reference](../json_reference) for information on which properties are supported.
+See the [Dev Container metadata reference](../json_reference) for information on which properties are supported.
diff --git a/_implementors/spec.md b/_implementors/spec.md
index dc72cfa5..fc04d2fa 100644
--- a/_implementors/spec.md
+++ b/_implementors/spec.md
@@ -36,7 +36,6 @@ Certain dev container metadata properties can be stored in an image label as an
Metadata should be representative of with the following structure, using one entry per [Dev Container Feature](../features) and devcontainer.json (see table below for the full list):
-
```json
[
{
@@ -62,7 +61,7 @@ The metadata is added to the image as a `devcontainer.metadata` label with a JSO
### Merge Logic
-To apply the metadata together with a user's devcontainer.json at runtime the following merge logic by property is used. The table also notes which properties are currently supported coming from the devcontainer.json and which from the feature metadata, this will change over time as we add more properties.
+To apply the metadata together with a user's devcontainer.json at runtime, the following merge logic by property is used. The table also notes which properties are currently supported coming from the devcontainer.json and from the Feature metadata- this will change over time as we add more properties.
| Property | Type/Format | Merge Logic | devcontainer.json | Feature Metadata |
| -------- | ----------- | ----------- | :---------------: | :--------------: |
@@ -181,7 +180,7 @@ Users control the permissions of applications executed in the containers, allowi
* **Container User**: The user that will be used for all operations that run inside a container. This concept is native to containers. It may be set in the container image, using the `containerUser` property for **image** and **dockerfile** scenarios, or using an orchestratric specific property like `user` property in Docker Compose files.
* **Remote User**: Used to run the [lifecycle](#lifecycle) scripts inside the container. This is also the user tools and editors that connect to the container should use to run their processes. This concept is not native to containers. Set using the `remoteEnv` property in all cases and defaults to the container user.
-This separation allows the ENTRYPOINT for the image to execute with different permissions than the developer and allows for developers to switch users without recreating their containers.
+This separation allows the `ENTRYPOINT` for the image to execute with different permissions than the developer and allows for developers to switch users without recreating their containers.
# Lifecycle
@@ -203,7 +202,7 @@ The exact steps required to validate configuration can vary based on exactly whe
## Environment Creation
-The creation process goes through the steps necesarry to go from the user configuration to a working **environment** that is ready to be used.
+The creation process goes through the steps necessary to go from the user configuration to a working **environment** that is ready to be used.
### Initialization
@@ -274,7 +273,7 @@ Like during the create process, remote [environment variables](#environment-vari
Dev containers support a single command for each of its lifecycle scripts. While serial execution of multiple commands can be achieved with `;`, `&&`, etc., parallel execution deserves first-class support.
-All lifecycle scripts have been extended to support `object` types. The key of the `object` will be a unique name for the command and the value will be the `string` or `array` command. Each command must exit successfully for the stage to be considered successful.
+All lifecycle scripts have been extended to support `object` types. The key of the `object` will be a unique name for the command, and the value will be the `string` or `array` command. Each command must exit successfully for the stage to be considered successful.
Each entry in the `object` will be run in parallel during that lifecycle step.
diff --git a/_implementors/templates-distribution.md b/_implementors/templates-distribution.md
index 81b65242..ab2d7ae9 100644
--- a/_implementors/templates-distribution.md
+++ b/_implementors/templates-distribution.md
@@ -1,9 +1,9 @@
---
layout: implementors
-title: "Dev Container Templates distribution and discovery [proposal]"
+title: "Dev Container Templates distribution and discovery"
shortTitle: "Templates distribution"
author: Microsoft
-index: 10
+index: 8
---
**TL;DR Check out the [quick start repository](https://github.com/devcontainers/template-starter) to get started on distributing your own Dev Container Templates.**
@@ -78,6 +78,7 @@ The `devcontainer-collection.json` is an auto-generated metadata file.
| :--- | :--- | :--- |
| `sourceInformation` | object | Metadata from the implementing packaging tool. |
| `templates` | array | The list of Templates that are contained in this collection.|
+{: .table .table-bordered .table-responsive}
Each Template's `devcontainer-template.json` metadata file is appended into the `templates` top-level array.
diff --git a/_implementors/templates.md b/_implementors/templates.md
index a8e5fdbc..d559a5cb 100644
--- a/_implementors/templates.md
+++ b/_implementors/templates.md
@@ -1,14 +1,14 @@
---
layout: implementors
-title: "Dev Container Templates reference [proposal]"
+title: "Dev Container Templates reference"
shortTitle: "Templates"
author: Microsoft
-index: 9
+index: 7
---
Development container "Templates" are source files packaged together that encode configuration for a complete development environment. A Template can be used in a new or existing project, and a [supporting tool](/supporting) will use the configuration from the Template to build a development container.
-The configuration is placed in a [`.devcontainer.json`](/implementors/json_reference#devcontainerjson) which can also reference other files within the Template. Alternatively, `.devcontainer/devcontainer.json` can also be used if the container needs to reference other files, such as a `Dockerfile` or `docker-compose.yml`. A Template can also provide additional source files (eg: boilerplate code or a [lifecycle script](/implementors/json_reference/#lifecycle-scripts).
+The configuration is placed in a [`.devcontainer.json`](/implementors/json_reference#devcontainerjson) which can also reference other files within the Template. Alternatively, `.devcontainer/devcontainer.json` can also be used if the container needs to reference other files, such as a `Dockerfile` or `docker-compose.yml`. A Template can also provide additional source files (eg: boilerplate code or a [lifecycle script](/implementors/json_reference/#lifecycle-scripts)).
Template metadata is captured by a `devcontainer-template.json` file in the root folder of the Template.
@@ -41,6 +41,7 @@ The properties of the file are as follows:
| `platforms` | array | Languages and platforms supported by the Template. |
| `publisher` | string | Name of the publisher/maintainer of the Template. |
| `keywords` | array | List of strings relevant to a user that would search for this Template. |
+{: .table .table-bordered .table-responsive}
### The `options` property
The `options` property contains a map of option IDs and their related configuration settings. These `options` are used by the supporting tools to prompt the user to choose from different Template configuration options. The tools would replace the option ID with the selected value in all the files (within the sub-directory of the Template). This replacement would happen before dropping the `.devcontainer.json` (or `.devcontainer/devcontainer.json`) and other files (within the sub-directory of the Template) required to containerize your project. See [option resolution](#option-resolution) for more details. For example:
@@ -66,6 +67,7 @@ The `options` property contains a map of option IDs and their related configurat
| `optionId.proposals` | array | A list of suggested string values. Free-form values **are** allowed. Omit when using `optionId.enum`. |
| `optionId.enum` | array | A strict list of allowed string values. Free-form values are **not** allowed. Omit when using `optionId.proposals`. |
| `optionId.default` | string | Default value for the option. |
+{: .table .table-bordered .table-responsive}
> `Note`: The `options` must be unique for every `devcontainer-template.json`
@@ -87,7 +89,7 @@ Tooling that handles releasing Templates will not republish Templates if that ex
## Release
-_For information on distributing Templates, see [templates-distribution](/implementors/templates-distribution)._
+_For information on distributing Templates, see the [Templates distribution doc](/implementors/templates-distribution)._
### Option Resolution
@@ -119,7 +121,7 @@ Suppose the `java` Template has the following `options` parameters declared in t
"17",
"11"
],
- "default": "17-bullseye"
+ "default": "17-bullseye"
},
"nodeVersion": {
"type": "string",
@@ -145,14 +147,14 @@ and it has the following `.devcontainer.json` file:
```json
{
- "name": "Java",
- "image": "mcr.microsoft.com/devcontainers/java:0-${templateOption:imageVariant}",
- "features": {
- "ghcr.io/devcontainers/features/node:1": {
- "version": "${templateOption:nodeVersion}",
- "installMaven": "${templateOption:installMaven}"
- }
- },
+ "name": "Java",
+ "image": "mcr.microsoft.com/devcontainers/java:0-${templateOption:imageVariant}",
+ "features": {
+ "ghcr.io/devcontainers/features/node:1": {
+ "version": "${templateOption:nodeVersion}",
+ "installMaven": "${templateOption:installMaven}"
+ }
+ },
// ...
}
```
@@ -161,7 +163,7 @@ A user tries to add the `java` Template to their project using the [supporting t
The supporting tool could then use a string replacer for all the files within the sub-directory of the Template. In this example, `.devcontainer.json` needs to be modified and hence, the inputs can provided to it as follows:
-```
+```json
{
imageVariant:"17-bullseye",
nodeVersion: "latest",
@@ -173,16 +175,16 @@ The modified `.devcontainer.json` will be as follows:
```json
{
- "name": "Go",
- "image": "mcr.microsoft.com/devcontainers/go:0-17-bullseye",
- "features": {
- "ghcr.io/devcontainers/features/node:1": {
- "version": "latest",
- "installMaven": "false"
- }
- },
- ...
+ "name": "Go",
+ "image": "mcr.microsoft.com/devcontainers/go:0-17-bullseye",
+ "features": {
+ "ghcr.io/devcontainers/features/node:1": {
+ "version": "latest",
+ "installMaven": "false"
+ }
+ },
+ ...
}
```
-The modified `.devcontainer.json` would be dropped into any existing folder as a starting point for containerizing your project.
\ No newline at end of file
+The modified `.devcontainer.json` would be dropped into any existing folder as a starting point for containerizing your project.
diff --git a/supporting.md b/supporting.md
index bdeaab41..6d0ac8dd 100644
--- a/supporting.md
+++ b/supporting.md
@@ -45,12 +45,11 @@ You may learn more in the [announcement blog post](https://devblogs.microsoft.co
The dev container command line interface (CLI) is a reference implementation for the Dev Container spec. It is in development in the [devcontainers/cli](https://github.com/devcontainers/cli) repo. It is intended both for use directly and by tools or services that want to support the spec.
-
The CLI can take a `devcontainer.json` and create and configure a dev container from it. It allows for prebuilding dev container definitions using a CI or DevOps product like GitHub Actions. It can detect and include dev container features and apply them at container runtime, and run [lifecycle scripts](implementors/json_reference/#lifecycle-scripts) like `postCreateCommand`, providing more power than a plain `docker build` and `docker run`.
#### VS Code extension CLI
-The [VS Code Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) includes a variation of the devcontainer CLI that adds the ability use the command line to open the a Dev Container in VS Code. It is also automatically updated when the extension updates.
+The [VS Code Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) includes a variation of the devcontainer CLI that adds the ability use the command line to open a dev container in VS Code. It is also automatically updated when the extension updates.
Press cmd/ctrl+shift+p or F1 and select the **Dev Containers: Install devcontainer CLI** command to install it.
From 17626803e9f231640f20592ee8dc8cdef8524bbd Mon Sep 17 00:00:00 2001
From: Lauri Takacsi
Date: Tue, 21 Feb 2023 14:22:11 -0800
Subject: [PATCH 081/333] Add trunk to collection index (#158)
---
_data/collection-index.yml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index f1bdda4d..206e7961 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -292,4 +292,9 @@
maintainer: Hamish Cox
contact: https://github.com/HamishWHC/cs3231-devcontainer/issues
repository: https://github.com/HamishWHC/cs3231-devcontainer
- ociReference: ghcr.io/hamishwhc/cs3231-devcontainer
\ No newline at end of file
+ ociReference: ghcr.io/hamishwhc/cs3231-devcontainer
+- name: TRunk CLI Features (trunk.io)
+ maintainer: trunk-io
+ contact: https://github.com/trunk-io/devcontainer-feature/issues
+ repository: https://github.com/trunk-io/devcontainer-feature
+ ociReference: ghcr.io/trunk-io/devcontainer-feature
From c74327e7091da85882dd28e2cc95754ee590050d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?=
Date: Mon, 27 Feb 2023 19:20:50 +0200
Subject: [PATCH 082/333] Add MultiversX templates (experimental) (#160)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 206e7961..263fc582 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -298,3 +298,8 @@
contact: https://github.com/trunk-io/devcontainer-feature/issues
repository: https://github.com/trunk-io/devcontainer-feature
ociReference: ghcr.io/trunk-io/devcontainer-feature
+- name: MultiversX Dev Container Templates
+ maintainer: MultiversX
+ contact: https://github.com/multiversx/mx-template-devcontainers/issues
+ repository: https://github.com/multiversx/mx-template-devcontainers
+ ociReference: ghcr.io/multiversx/mx-template-devcontainers
From 45f8b32ffde9cba10ec16ad04aaaf805779b14ea Mon Sep 17 00:00:00 2001
From: Joseph Heck
Date: Mon, 27 Feb 2023 13:40:28 -0800
Subject: [PATCH 083/333] adding feature 'jemalloc' to the index (#162)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 263fc582..5167d5fc 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -303,3 +303,8 @@
contact: https://github.com/multiversx/mx-template-devcontainers/issues
repository: https://github.com/multiversx/mx-template-devcontainers
ociReference: ghcr.io/multiversx/mx-template-devcontainers
+- name: jemalloc
+ maintainer: Joseph Heck
+ contact: https://github.com/heckj/jemalloc/issues
+ repository: https://github.com/heckj/jemalloc
+ ociReference: ghcr.io/heckj/jemalloc
From e57ffdb51825c04ebaf1cbaf592b273c4ffcb84a Mon Sep 17 00:00:00 2001
From: Jason Walker
Date: Tue, 28 Feb 2023 11:08:28 -0500
Subject: [PATCH 084/333] Added guide for GitLab CI (#161)
* Added guide for GitLab CI
* Grammar/spelling corrections for GitLab CI guide
* Updated image path in GitLab CI guide example code
* Changed 'devcontainer' to 'dev container' in GitLab guide for consistency
* Added indication that CDK Feature is community maintained
---
_posts/2023-02-15-gitlab-ci.md | 150 +++++++++++++++++++++++++++++++++
1 file changed, 150 insertions(+)
create mode 100644 _posts/2023-02-15-gitlab-ci.md
diff --git a/_posts/2023-02-15-gitlab-ci.md b/_posts/2023-02-15-gitlab-ci.md
new file mode 100644
index 00000000..85104558
--- /dev/null
+++ b/_posts/2023-02-15-gitlab-ci.md
@@ -0,0 +1,150 @@
+---
+layout: post
+title: "Working with GitLab CI"
+author: "@raginjason"
+authorUrl: https://github.com/raginjason
+---
+
+For simple use cases you can use your development container (dev container) for CI without much issue. Once you begin using more advanced dev container functionality such as [Features](/features), you will need dev container tooling in your CI pipeline. While GitHub CI has the [devcontainers-ci GitHub Action](https://github.com/marketplace/actions/devcontainers-ci), there is no such analog in GitLab CI. To achieve the goal of using your dev container in GitLab CI, the container must be pre-built.
+
+This document will guide you on how to build a dev container with GitLab CI, push that dev container to the GitLab Container Registry, and finally reference that dev container in your main project for both local development and GitLab CI.
+
+For the purpose of this document, we will assume the main project is named `my-project` and lives under the `my-user` path. The example here uses a few [Features](/features), which is what forces the container to be pre-built.
+
+## The Development Container GitLab project
+
+Create a project in GitLab where the stand-alone dev container project will live. As the main project is assumed to be named `my-project`, let's assume the dev container project name will be `my-project-dev-container`
+
+### Development Container .devcontainer/devcontainer.json
+
+The example here is a CDK project for Python makes use of both the [AWS CLI](https://github.com/devcontainers/features/tree/main/src/aws-cli) and the community-maintained [AWS CDK](http://github.com/devcontainers-contrib/features/tree/main/src/aws-cdk) Features.
+
+`.devcontainer/devcontainer.json`:
+
+```json
+{
+ "build": {
+ "context": "..",
+ "dockerfile": "Dockerfile"
+ },
+ "features": {
+ "ghcr.io/devcontainers/features/aws-cli:1": {},
+ "ghcr.io/devcontainers-contrib/features/aws-cdk:2": {}
+ },
+ "customizations": {
+ "vscode": {
+ "settings": {
+ "python.formatting.provider": "black"
+ }
+ }
+ }
+}
+```
+
+### Development Container Dockerfile
+
+As this is a Python project working with CDK, the `Dockerfile` will begin by using the latest Python dev container image and then install some basic packages via `pip`.
+
+`Dockerfile`:
+
+```Dockerfile
+FROM mcr.microsoft.com/devcontainers/python:latest
+
+RUN pip3 --disable-pip-version-check --no-cache-dir install aws_cdk_lib constructs jsii pylint \
+ && rm -rf /tmp/pip-tmp
+```
+
+### Development Container .gitlab-ci.yml
+
+Since there is no GitLab CI equivalent to [devcontainers-ci GitHub Action](https://github.com/marketplace/actions/devcontainers-ci), we will need to install the devcontainers CLI manually. The following will:
+
+1. Install the packages that the devcontainers CLI requires
+2. Install the devcontainers CLI itself
+3. Login to GitLab Container Repository
+4. Build the dev container and push it to the GitLab Container Repository
+
+`.gitlab-ci.yml`:
+
+```yaml
+image: docker:latest
+
+variables:
+ DOCKER_TLS_CERTDIR: "/certs"
+
+services:
+ - docker:dind
+
+before_script:
+ - apk add --update nodejs npm python3 make g++
+ - npm install -g @devcontainers/cli
+
+build:
+ stage: build
+ script:
+ - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
+ - devcontainer build --workspace-folder . --push true --image-name ${CI_REGISTRY_IMAGE}:latest
+```
+
+## The Main GitLab project
+
+### Main .devcontainer/devcontainer.json
+
+`.devcontainer/devcontainer.json`:
+
+```json
+{
+ "image": "registry.gitlab.com/my-user/my-project-dev-container"
+}
+```
+
+### Main .gitlab.ci.yml
+
+Assuming the dev container project name is based off the main project name, the `${CI_REGISTRY_NAME}` variable can be used. This configuration performs some basic sanity checks and linting once merge requests are submitted.
+
+`.gitlab-ci.json`:
+
+```yaml
+image: ${CI_REGISTRY_IMAGE}-dev-container:latest
+
+before_script:
+ - python --version
+ - cdk --version
+
+stages:
+ - Build
+ - Lint
+
+py_compile:
+ stage: Build
+ script:
+ - find . -type f -name "*.py" -print | xargs -n1 python3 -m py_compile
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+
+cdk synth:
+ stage: Build
+ script:
+ - JSII_DEPRECATED=fail cdk --app "python3 app.py" synth
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+
+Pylint:
+ stage: Lint
+ script:
+ - pylint *
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+
+Black code format:
+ stage: Lint
+ script:
+ - black --check --diff .
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+```
+
+## Conclusion
+
+It's worth noting that the best practice would be to pin the versions of the various packages installed by `pip`, `apk`, `npm` and the like. Version pinning was omitted from this guide so that it can be executed as-is without issue.
+
+The above provides a starting point for a dev container that's used for both local development and in GitLab CI. It can easily be customized for other languages and tool chains. Take it and make it your own, happy coding!
\ No newline at end of file
From 3ac31abc0da4387b97901565291d5fede942ec07 Mon Sep 17 00:00:00 2001
From: Joseph Heck
Date: Tue, 28 Feb 2023 14:35:06 -0800
Subject: [PATCH 085/333] adding additional features and migrating jemalloc
into a combined set (#164)
---
_data/collection-index.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 5167d5fc..190f4174 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -303,8 +303,8 @@
contact: https://github.com/multiversx/mx-template-devcontainers/issues
repository: https://github.com/multiversx/mx-template-devcontainers
ociReference: ghcr.io/multiversx/mx-template-devcontainers
-- name: jemalloc
+- name: Swift Dev Container Features
maintainer: Joseph Heck
- contact: https://github.com/heckj/jemalloc/issues
- repository: https://github.com/heckj/jemalloc
- ociReference: ghcr.io/heckj/jemalloc
+ contact: https://github.com/heckj/devcontainer-swift-additions/issues
+ repository: https://github.com/heckj/devcontainer-swift-additions
+ ociReference: ghcr.io/heckj/devcontainer-swift-additions
From 556accc6faf5326e9799e63370bd234adaefa755 Mon Sep 17 00:00:00 2001
From: Andrii Tararaka
Date: Thu, 2 Mar 2023 20:35:07 +0200
Subject: [PATCH 086/333] Add new feature 'kubeseal' (#165)
* Add new feature 'kubeseal'
* Updated collection-index entry after code review
Updated oci reference to point to root repository rather than a specific tool
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 190f4174..fdb5cae1 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -308,3 +308,8 @@
contact: https://github.com/heckj/devcontainer-swift-additions/issues
repository: https://github.com/heckj/devcontainer-swift-additions
ociReference: ghcr.io/heckj/devcontainer-swift-additions
+- name: gickis Dev Container Features
+ maintainer: Andrii Tararaka
+ contact: https://github.com/gickis/devcontainer-features/issues
+ repository: https://github.com/gickis/devcontainer-features
+ ociReference: ghcr.io/gickis/devcontainer-features
From 862a1ea1321d91d46ef998c367808c0b4789e07e Mon Sep 17 00:00:00 2001
From: Jonathan Nagayoshi
Date: Tue, 7 Mar 2023 10:27:50 -0600
Subject: [PATCH 087/333] feat: adds sonikro devcontainer-feature repository to
the collection (#166)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index fdb5cae1..99fabcdd 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -313,3 +313,8 @@
contact: https://github.com/gickis/devcontainer-features/issues
repository: https://github.com/gickis/devcontainer-features
ociReference: ghcr.io/gickis/devcontainer-features
+- name: sonikro Dev Container Features
+ maintainer: Jonathan Nagayoshi
+ contact: https://github.com/sonikro/devcontainer-features/issues
+ repository: https://github.com/sonikro/devcontainer-features
+ ociReference: ghcr.io/sonikro/devcontainer-features
From 7e65ced40c84ffb8883f63b3777bcdab3897a55f Mon Sep 17 00:00:00 2001
From: jarrodcolburn
Date: Tue, 7 Mar 2023 10:30:07 -0600
Subject: [PATCH 088/333] added flutter sdk features collection (#167)
Co-authored-by: Samruddhi Khandale
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 99fabcdd..a10da80b 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -313,6 +313,11 @@
contact: https://github.com/gickis/devcontainer-features/issues
repository: https://github.com/gickis/devcontainer-features
ociReference: ghcr.io/gickis/devcontainer-features
+- name: Flutter SDK
+ maintainer: Jarrod Colburn
+ contact: jarrod@jarrodcolburn.com
+ repository: https://github.com/jarrodcolburn/features
+ ociReference: ghcr.io/jarrodcolburn/features
- name: sonikro Dev Container Features
maintainer: Jonathan Nagayoshi
contact: https://github.com/sonikro/devcontainer-features/issues
From ecc4e7e7ef676dbb2f58c2499a2b5cc544ad8669 Mon Sep 17 00:00:00 2001
From: JasonTheDeveloper
Date: Thu, 9 Mar 2023 04:13:42 +1100
Subject: [PATCH 089/333] feat(features): add jasonthedeveloper features to
collection (#169)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index a10da80b..a4e78eb1 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -323,3 +323,8 @@
contact: https://github.com/sonikro/devcontainer-features/issues
repository: https://github.com/sonikro/devcontainer-features
ociReference: ghcr.io/sonikro/devcontainer-features
+- name: Features by JasonTheDeveloper
+ maintainer: JasonTheDeveloper
+ contact: https://github.com/JasonTheDeveloper/features/issues
+ repository: https://github.com/JasonTheDeveloper/features
+ ociReference: ghcr.io/jasonthedeveloper/features
From 952356dd573fca534ecfdae8c72cb1ef7d656ea9 Mon Sep 17 00:00:00 2001
From: John Muchovej <5000729+jmuchovej@users.noreply.github.com>
Date: Wed, 8 Mar 2023 17:50:27 -0500
Subject: [PATCH 090/333] Adding John Muchovej's Devcontainer Templates (#170)
* Adding John Muchovej's Devcontainer Features/Templates
* Remove `../features` until published.
---
_data/collection-index.yml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index a4e78eb1..8a473057 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -328,3 +328,7 @@
contact: https://github.com/JasonTheDeveloper/features/issues
repository: https://github.com/JasonTheDeveloper/features
ociReference: ghcr.io/jasonthedeveloper/features
+- name: Templates by John Muchovej
+ maintainer: John Muchovej
+ contact: https://github.com/jmuchovej/devcontainers
+ ociReference: ghcr.io/jmuchovej/templates
From 115b65cb1ff180ef6b4a45cbf8ffb1dac23d6c85 Mon Sep 17 00:00:00 2001
From: John Muchovej <5000729+jmuchovej@users.noreply.github.com>
Date: Wed, 8 Mar 2023 18:42:20 -0500
Subject: [PATCH 091/333] Fix missing repository entry (#171)
Forgot to add the `repository` link. https://github.com/devcontainers/devcontainers.github.io/pull/170#discussion_r1130168002
---
_data/collection-index.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 8a473057..e56b141e 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -330,5 +330,6 @@
ociReference: ghcr.io/jasonthedeveloper/features
- name: Templates by John Muchovej
maintainer: John Muchovej
- contact: https://github.com/jmuchovej/devcontainers
+ contact: https://github.com/jmuchovej/devcontainers/issues
+ repository: https://github.com/jmuchovej/devcontainers
ociReference: ghcr.io/jmuchovej/templates
From 2de3c80dcae255db04a6dd754e42bb57e47dfa44 Mon Sep 17 00:00:00 2001
From: Dasith Wijesiriwardena
Date: Fri, 10 Mar 2023 04:27:19 +1100
Subject: [PATCH 092/333] Add Grype feature (#172)
* Add Grype feature
* update repo name
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index e56b141e..2082c637 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -333,3 +333,8 @@
contact: https://github.com/jmuchovej/devcontainers/issues
repository: https://github.com/jmuchovej/devcontainers
ociReference: ghcr.io/jmuchovej/templates
+- name: Features by dasiths
+ maintainer: dasiths
+ contact: https://dasith.me
+ repository: https://github.com/dasiths/devcontainer-features
+ ociReference: ghcr.io/dasiths/devcontainer-features
From 28aab73483d4d35a99389cc8a93ffc9d877c57f3 Mon Sep 17 00:00:00 2001
From: Dasith Wijesiriwardena
Date: Fri, 10 Mar 2023 11:11:17 +1100
Subject: [PATCH 093/333] update maintainer name (#173)
---
_data/collection-index.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 2082c637..302ed74e 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -334,7 +334,7 @@
repository: https://github.com/jmuchovej/devcontainers
ociReference: ghcr.io/jmuchovej/templates
- name: Features by dasiths
- maintainer: dasiths
+ maintainer: Dasith Wijes
contact: https://dasith.me
repository: https://github.com/dasiths/devcontainer-features
ociReference: ghcr.io/dasiths/devcontainer-features
From dbbe44f565b6966dc7f001683a7a77ccdc7a7342 Mon Sep 17 00:00:00 2001
From: Felix Wieland
Date: Mon, 13 Mar 2023 17:19:59 +0100
Subject: [PATCH 094/333] added features for 1password, maelstrom and
terraspace (#175)
---
_data/collection-index.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/_data/collection-index.yml b/_data/collection-index.yml
index 302ed74e..e2090277 100644
--- a/_data/collection-index.yml
+++ b/_data/collection-index.yml
@@ -338,3 +338,8 @@
contact: https://dasith.me
repository: https://github.com/dasiths/devcontainer-features
ociReference: ghcr.io/dasiths/devcontainer-features
+- name: flexwie devcontainer features
+ maintainer: Felix Wieland
+ contact: https://github.com/flexwie/devcontainer-features/issues
+ repository: https://github.com/flexwie/devcontainer-features
+ ociReference: ghcr.io/flexwie/devcontainer-features
From 522e3e2124b7c48a357ec461eccb844c9ed58b8a Mon Sep 17 00:00:00 2001
From: jarrodcolburn
Date: Mon, 13 Mar 2023 11:25:12 -0500
Subject: [PATCH 095/333] Add Favicon (#176)
* Add favicon file
* change favicon .png -> .ico
* extract css theme color for use site
* use jekyll site to provide css color
* set meta theme color to change title bar color
---
_config.yml | 1 +
_includes/head.html | 3 ++-
css/main.scss | 6 +++---
img/favicon.ico | Bin 0 -> 178545 bytes
4 files changed, 6 insertions(+), 4 deletions(-)
create mode 100644 img/favicon.ico
diff --git a/_config.yml b/_config.yml
index 855811df..ea6505ee 100644
--- a/_config.yml
+++ b/_config.yml
@@ -7,6 +7,7 @@ description: >
url: https://devcontainers.github.io # the base hostname & protocol for your site
git_address: https://github.com/devcontainers/devcontainers.github.io
git_edit_address: https://github.com/devcontainers/devcontainers.github.io/settings/pages/blob/gh-pages
+theme_color: 2753E3
# Build settings
markdown: kramdown
diff --git a/_includes/head.html b/_includes/head.html
index 0c08952d..96f19362 100644
--- a/_includes/head.html
+++ b/_includes/head.html
@@ -11,7 +11,8 @@
-
+
+
diff --git a/css/main.scss b/css/main.scss
index 53433b0a..b205fef8 100644
--- a/css/main.scss
+++ b/css/main.scss
@@ -24,7 +24,7 @@ body {
}
.bg-primary {
- background-color: #2753e3 !important;
+ background-color: #{{ site.theme_color }} !important;
}
.header-container {
@@ -442,7 +442,7 @@ pre[class=highlight] {
}
.nav .nav-link {
- color: #2753e3 !important;
+ color: #{{ site.theme_color }} !important;
}
.nav .nav-link:hover {
@@ -450,7 +450,7 @@ pre[class=highlight] {
}
a {
- color: #2753e3;
+ color: #{{ site.theme_color }};
}
a:hover {
diff --git a/img/favicon.ico b/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..dff7dd5a96749bdc3b486f52a277213592cce918
GIT binary patch
literal 178545
zcmeF42fU5tAHa`$jce~cu9-+?{*+y2qC%*U(J&&E>|8RFj8u|TTH4ww<5o&4X;D$!
zC>n&6QQY(YeV==NulK&rxo6*@dp~~O=e+MTe(U)?`}eq9Ib3;NMT)rOS=lu>r^|J}
z%jGIlCgu0+ye?O=ysKO}<@ZX7H?xq-RlmOHcMX@TZoJFYx^>F$b1!zewzYM+I(GD=
z?;+`Dx?KJHd*Uya^gCRxgal9gxE!v!BXhX;qx|x1T&|wuVqE9SZz)RNq`a4h%O!X?
z|0-3gX_9p8v!Pov?|@_v!PK>>Hgij~~uE2IEn-g&+ehq#)K
zC%<17aF>_3#BY3FdH0R&N*Ew)@;jXmaWxO{SyVy3RjX3b-KA+6_dVAZcE5T{KKFwI
z3K}5HJH8QzxTFy<^vdspZ5x$!KRLL7`-PkHyT@K$%ze@MMsWt5OCC6NhiaAuhiqz2P(AxmOo<5ARgmT~^}CdpBwB
z=w8$SVczkLIK=g&H!>o8m%JNsX>pUz#4R81o_J+Z17#(wc@l@Xp7ch(_VmPs*A31s
z?|$U^f(8ilj&EMl|3rFl8rHG6yZ*Tq-1CIjuL#c{8d%T(VczkLI1c<*k{+JSkvuML
zSk^tXV~I2P&pW;m$HBi&cKJOoGPo0%){EDkS!MT~hT!Bvn
z{t!s^0Ab$ojX1>BbT0C;|CKLa-umW=*HE613j8Ku>OdM#;t-cKRzBp(p9All66Xei
zJpyOsi+*@?K&tz6OQHabn1y2CenTu)l^u*#6I
z(nQ%--im9zniY(#rLJzDk<$QSY%t$6o}|^X$b-BzU!L&J@C3Z7#8)!55_|L6l-%x}
zvvRth8B~I^_rQ9zJ&+pzfJEwc|
z9l4E7z&`K|I|UHt9rl7a#3c=B`9@xzJjomV`VBfeG%n-bC3w9tDzE$cwk6$lg?`#4
zzEzYo*fD@G@AyU>;*y56(Wjg3=#%Qpa7-gjLg19rI*
zCNAv~X~~1UJn6`rdSd0jeMT;$CmtL$p22zL(EM%y{5|Q-lep*=X&w2KH+3F3yWhA{8=MjYaj#z*~1
zWgo7VI{u=~KFksup!NaW0ksc&Q~N*~(t5EEY1+3f4*Q0UQ~SoZ0PLIEQEaMr`z(24
zlXr-H28?}{cR|=^%Aie%c>Cg|4TFw|wU4yH(QMzzpFam3@JrhUwXtfelI5G$OTMMq
zKS^}Ox)P*^6zMYhGhgr3?0!v$Ux*e-BHAlU65SKKX-bJ2){MplZ@@Oj0B?3tTj89UvQC@x%hq$C6Z7Mv{!a?F%_)55(z+D2r
z3-~M3*LTvA2YFd}d&9y0UBdqpcwfL*zQMjHFY@$?gZ;gP+Xx^_pJmW4(Z|6inl{nX
zR;883lP7tn!oi_y;OMn%Y`?b0Z5os{?HBeApuOXr!A0!2z0GjoMBWx39AzV;Gk9)j
zl|0X@QNi7}bxG5Y*(>e!@%vov-FL;h_XrT)J2%$7Qu;W=AuhO*)=@scDTA^sK1diH
zMNdq8r8Qpo+p=Cc_Y@iTZ6L{rBP=?t=?r+^cWRYsUSwtpIZXZ^=8p5r?>>AuV~B
zK1*tOQkK15P*04WQ#NB-`ot@4Dq!e4algy-|LKQzWz6fD(||tZ5AXO!9L5Wzfj8tq
zUgT+$3uRFzJOB^ss-d0!K65jFF3RCPEU