-
Notifications
You must be signed in to change notification settings - Fork 335
Description
Unlike some developer centric formats, a non-goal for devcontainer.json is to become yet another multi-container orchestrator format. Instead, its goal is to enable development in containers regardless of how they are orchestrated. There's a single container / non-orchestrated build
property, but the dockerComposeFile
property is representative of this desire today (along with support for the "attach" scenario in Remote - Containers, though that's not directly related to the dev container spec). Native Kubernetes integration is one long requested example another format (microsoft/vscode-remote-release#12), but clouds have their own formats, we can expect more to evolve over time, and there's no doubt we could improve interop with Docker Compose.
With that in mind, there are two related proposals to consider:
-
Introducing an
orchestrator
property much likecustomizations
(for Move settings and extensions properties to vscode namespace #1) that we keep in mind for the reference implementation (Publish reference implementation #9) where orchestrator specific properties can live.- We also need to consider whether we'd support connecting to multiple services from the same devcontainer.json given User contributable container features #8. Today you connect to multiple orchestrated containers using separate devcontainer.json files as described in VS Code docs, but the idea of a feature needs to be able to be applied to multiple orchestrated containers when their images are built and they are spun up. This naturally leads to whether a better (or additional) model is to...
-
Introduce an extension to the spec that would describe how to "embed"
devcontainer.json
in an orchestrator format. For example, an automated json <=> yaml conversion that enables it to exist in Docker Composex-*
extension attributes ([RfC] generalize support for custom extensions docker/compose#7200).
While each new orchestrator would still necessitate updates to the reference implementation (#9) and/or the orchestrator's code, documenting how this could be achieved would help guide the implementation, and keep everyone in a place that will avoid unexpected issues with changes down the road. For example, if the Docker Compose spec ended up having first class support for certain existing devcontainer.json properties, there would still be a known path for those that were not.