Commit 00177b2
Add experimental Dev Container support to Positron (#10884)
This change adds early, experimental support for Dev Containers to
Positron.
<img width="1226" height="860" alt="image"
src="https://github.com/user-attachments/assets/e0ca3360-12c9-47da-93c6-cade37db47a4"
/>
Because the feature is experimental, it is currently behind a feature
flag:
<img width="578" height="136" alt="image"
src="https://github.com/user-attachments/assets/fd2495e9-dc88-436a-a0c7-035bf75623fa"
/>
The goal of this change is to enable the most common dev container
workflows that center around building (or rebuilding) a container and
opening the workspace inside the container. However, note that in this
early version, many features are not implemented or are incomplete.
Specifically:
- musl-based Linux distributions (such as Alpine) are not supported
(#10468); the container must be running a version of Linux already
supported by Positron
- Only single-container configurations are supported (no `docker
compose`)
- No tools or templates are supplied for creating or authoring
`devcontainer.json` files
- Only one container is supported per project
- Docker volumes are not supported, just regular mounts
- In the MRU, dev containers show up with the remote rather than local
path (e.g. `/workspaces/foo`)
- Container management features (see/attach to running containers) are
not available when inside a container
For compatibility, the new extension uses largely the same command names
and settings as the official VS Code Dev Containers extension.
It also includes a lightly modified version of the [Dev Containers
CLI](https://github.com/devcontainers/cli) reference implementation. The
implementation is used to derive the correct container management
commands, which are (generally) executed in Positron terminals for
visibility.
Addresses #4691.
### Release Notes
<!--
Optionally, replace `N/A` with text to be included in the next release
notes.
The `N/A` bullets are ignored. If you refer to one or more Positron
issues,
these issues are used to collect information about the feature or
bugfix, such
as the relevant language pack as determined by Github labels of type
`lang: `.
The note will automatically be tagged with the language.
These notes are typically filled by the Positron team. If you are an
external
contributor, you may ignore this section.
-->
#### New Features
- Experimental support for Dev Containers (#4691)
#### Bug Fixes
- N/A
### QA Notes
Like Remote SSH, this feature is difficult to test outside release
builds since it needs to download a matching server component into the
container. And -- also like remote SSH -- there's a setting to change
the download URL. If you need to test a build that doesn't have a
released Positron version to download, you can change this setting to
the URL of the closest matching build.
This feature should be tested across all three operating systems since
the Docker integration is somewhat OS-specific.
---------
Co-authored-by: positron-bot[bot] <173392469+positron-bot[bot]@users.noreply.github.com>1 parent 28310d2 commit 00177b2
File tree
113 files changed
+26645
-0
lines changed- build
- npm
- extensions/positron-dev-containers
- src
- commands
- common
- container
- notifications
- remote
- server
- spec
- spec-common
- spec-configuration
- spec-node
- collectionCommonUtils
- featuresCLI
- templatesCLI
- typings
- spec-shutdown
- spec-utils
- views
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
113 files changed
+26645
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
Lines changed: 17 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
0 commit comments