Git Product home page Git Product logo

features's People

Contributors

acesyde avatar alexander-smolyakov avatar bamurtaugh avatar chuxel avatar clockwork-muse avatar devcontainers-bot avatar eitsupi avatar eljog avatar gauravsaini04 avatar github-actions[bot] avatar hoechenberger avatar imphil avatar jacobwoffenden avatar jdputschadi avatar joshspicer avatar jungaretti avatar kklopfenstein avatar lucasfcnunes avatar markphip avatar naturedamends avatar nebula-it avatar pauldotyu avatar prabhakk-mw avatar prathameshzarkar9 avatar prulloac avatar rafaelfranca avatar raymond-chetty avatar samruddhikhandale avatar sliekens avatar zephyros-dev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

features's Issues

New Feature for Kind installation

The Kubernetes community guides contributorts to use kind (Kubernetes-in-Docker). A feature to easily install kind via a dev container will enable easy setup of Kubernetes contributor environments.

Failed to fetch feature, ETIMEOUT 205.251.194.84:443

I'm unable to rebuild devcontainer which was working in the past.

image

"features": {
    "ghcr.io/devcontainers/features/common-utils": {
      "username": "vscode"
    },
    "ghcr.io/devcontainers/features/git": {
      "version": "latest"
    },
    "ghcr.io/devcontainers/features/docker-in-docker": {
    }
  }

When git-lfs features is used, local .gitconfig wont be copied in to devcontainer

By default, user local .gitconfig should be copied into devcontainer, it works when using git feature only.
However, when git-lfs is used, then it wont be copied.
I guess it probably because we run git-lfs install in install process, so .gitconfig is not empty so vscode server stop copying local .gitconfig to prevent from overriding.

No xdg-open command, so host Browser cannot be started

When starting a browser by executing cli on a terminal in devcontainer (VSCode Remote - Container), if the browser startup depends on xdg-open, it will fail because the xdg-open command does not exist.

For example, the following is obtained by executing cdktf init.

$ cdktf init --template="typescript"
Welcome to CDK for Terraform!

By default, cdktf allows you to manage the state of your stacks using Terraform Cloud for free.
cdktf will request an API token for app.terraform.io using your browser.

If login is successful, cdktf will store the token in plain text in
the following file for use by subsequent Terraform commands:
    /home/node/.terraform.d/credentials.tfrc.json

Note: The local storage mode isn't recommended for storing the state of your stacks.

? Do you want to continue with Terraform Cloud remote state management? Yes

opening webpage using your browser.....

If the web browser didn't open the window automatically, you can go to the following url:
        https://app.terraform.io/app/settings/tokens?source=terraform-login

? Token for app.terraform.io ๐Ÿ”‘ [input is hidden] /usr/local/share/npm-global/lib/node_modules/cdktf-cli/node_modules/yoga-layout-prebuilt/yoga-layout/build/Release/nbind.js:53
        throw ex;
        ^

Error: spawn xdg-open ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
    at onErrorNT (node:internal/child_process:478:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn xdg-open',
  path: 'xdg-open',
  spawnargs: [
    'https://app.terraform.io/app/settings/tokens?source=terraform-login'
  ]
}

CLI tools that use the environment variable BROWSER, such as github-cli, are not affected, but there must be many CLI tools that use xdg-open.

I originally submitted the form below, but I thought it was a devcontainer issue, so I submitted it here.

hashicorp/terraform-cdk#2132

`docker-in-docker` fail to start with amd64 image on macOS M1

Description

  • dockerd installed using docker-in-docker features fails to run on macOS M1 machine with amd64 image
  • The features works normally using arm64 image

Steps to reproduce

  1. Build .devcontainer from the following file:
    devcontainer.json
{
    "name": "DIND container",
    "dockerFile": "Dockerfile",
    "containerUser": "node",
    "remoteUser": "node",
    "features": {
        "ghcr.io/devcontainers/features/docker-from-docker:1": {},
    }
}

Dockerfile

FROM --platform=linux/amd64 mcr.microsoft.com/devcontainers/typescript-node:16

Issues

  • dockerd is unable to start. Here's the logs if I run sudo dockerd:
INFO[2022-10-13T03:09:21.395301838Z] Starting up                                  
INFO[2022-10-13T03:09:21.412464546Z] libcontainerd: started new containerd process  pid=3080
INFO[2022-10-13T03:09:21.414531504Z] parsed scheme: "unix"                         module=grpc
INFO[2022-10-13T03:09:21.414705338Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2022-10-13T03:09:21.415490796Z] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2022-10-13T03:09:21.415749879Z] ClientConn switching balancer to "pick_first"  module=grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md#version-header 
INFO[2022-10-13T03:09:21.657304379Z] starting containerd                           revision=a17ec496a95e55601607ca50828147e8ccaeebf1 version=1.5.13+azure-2
INFO[2022-10-13T03:09:21.775481546Z] loading plugin "io.containerd.content.v1.content"...  type=io.containerd.content.v1
INFO[2022-10-13T03:09:21.776213463Z] loading plugin "io.containerd.snapshotter.v1.aufs"...  type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.777676171Z] skip loading plugin "io.containerd.snapshotter.v1.aufs"...  error="aufs is not supported (modprobe aufs failed: exec: \"modprobe\": executable file not found in $PATH \"\"): skip plugin" type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.778019421Z] loading plugin "io.containerd.snapshotter.v1.btrfs"...  type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.778673296Z] skip loading plugin "io.containerd.snapshotter.v1.btrfs"...  error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs (ext4) must be a btrfs filesystem to be used with the btrfs snapshotter: skip plugin" type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.778758379Z] loading plugin "io.containerd.snapshotter.v1.devmapper"...  type=io.containerd.snapshotter.v1
WARN[2022-10-13T03:09:21.779001879Z] failed to load plugin io.containerd.snapshotter.v1.devmapper  error="devmapper not configured"
INFO[2022-10-13T03:09:21.779105296Z] loading plugin "io.containerd.snapshotter.v1.native"...  type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.779538629Z] loading plugin "io.containerd.snapshotter.v1.overlayfs"...  type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.781382129Z] loading plugin "io.containerd.snapshotter.v1.zfs"...  type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.781861588Z] skip loading plugin "io.containerd.snapshotter.v1.zfs"...  error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter: skip plugin" type=io.containerd.snapshotter.v1
INFO[2022-10-13T03:09:21.781940254Z] loading plugin "io.containerd.metadata.v1.bolt"...  type=io.containerd.metadata.v1
WARN[2022-10-13T03:09:21.782172754Z] could not use snapshotter devmapper in metadata plugin  error="devmapper not configured"
INFO[2022-10-13T03:09:21.782304463Z] metadata content store policy set             policy=shared
INFO[2022-10-13T03:09:21.785518338Z] loading plugin "io.containerd.differ.v1.walking"...  type=io.containerd.differ.v1
INFO[2022-10-13T03:09:21.785782713Z] loading plugin "io.containerd.gc.v1.scheduler"...  type=io.containerd.gc.v1
INFO[2022-10-13T03:09:21.787059838Z] loading plugin "io.containerd.service.v1.introspection-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.788375129Z] loading plugin "io.containerd.service.v1.containers-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.788565129Z] loading plugin "io.containerd.service.v1.content-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.788827463Z] loading plugin "io.containerd.service.v1.diff-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.789024129Z] loading plugin "io.containerd.service.v1.images-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.789192338Z] loading plugin "io.containerd.service.v1.leases-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.789330088Z] loading plugin "io.containerd.service.v1.namespaces-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.789434338Z] loading plugin "io.containerd.service.v1.snapshots-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.789628213Z] loading plugin "io.containerd.runtime.v1.linux"...  type=io.containerd.runtime.v1
INFO[2022-10-13T03:09:21.790231171Z] loading plugin "io.containerd.runtime.v2.task"...  type=io.containerd.runtime.v2
INFO[2022-10-13T03:09:21.791182546Z] loading plugin "io.containerd.monitor.v1.cgroups"...  type=io.containerd.monitor.v1
INFO[2022-10-13T03:09:21.793136796Z] loading plugin "io.containerd.service.v1.tasks-service"...  type=io.containerd.service.v1
INFO[2022-10-13T03:09:21.793658754Z] loading plugin "io.containerd.internal.v1.restart"...  type=io.containerd.internal.v1
INFO[2022-10-13T03:09:21.795432421Z] loading plugin "io.containerd.grpc.v1.containers"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.795857504Z] loading plugin "io.containerd.grpc.v1.content"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.796000879Z] loading plugin "io.containerd.grpc.v1.diff"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.796269838Z] loading plugin "io.containerd.grpc.v1.events"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.796690879Z] loading plugin "io.containerd.grpc.v1.healthcheck"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.796906588Z] loading plugin "io.containerd.grpc.v1.images"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.797034796Z] loading plugin "io.containerd.grpc.v1.leases"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.797202588Z] loading plugin "io.containerd.grpc.v1.namespaces"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.797557629Z] loading plugin "io.containerd.internal.v1.opt"...  type=io.containerd.internal.v1
INFO[2022-10-13T03:09:21.799339254Z] loading plugin "io.containerd.grpc.v1.snapshots"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.799557879Z] loading plugin "io.containerd.grpc.v1.tasks"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.799694629Z] loading plugin "io.containerd.grpc.v1.version"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.799756796Z] loading plugin "io.containerd.grpc.v1.introspection"...  type=io.containerd.grpc.v1
INFO[2022-10-13T03:09:21.805491421Z] serving...                                    address=/var/run/docker/containerd/containerd-debug.sock
INFO[2022-10-13T03:09:21.806265588Z] serving...                                    address=/var/run/docker/containerd/containerd.sock.ttrpc
INFO[2022-10-13T03:09:21.807189921Z] serving...                                    address=/var/run/docker/containerd/containerd.sock
INFO[2022-10-13T03:09:21.821722546Z] containerd successfully booted in 0.184633s  
INFO[2022-10-13T03:09:21.887599004Z] parsed scheme: "unix"                         module=grpc
INFO[2022-10-13T03:09:21.887708796Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2022-10-13T03:09:21.887778879Z] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2022-10-13T03:09:21.887836546Z] ClientConn switching balancer to "pick_first"  module=grpc
INFO[2022-10-13T03:09:21.893983879Z] parsed scheme: "unix"                         module=grpc
INFO[2022-10-13T03:09:21.894081379Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2022-10-13T03:09:21.894154963Z] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2022-10-13T03:09:21.894206296Z] ClientConn switching balancer to "pick_first"  module=grpc
INFO[2022-10-13T03:09:21.907646796Z] [graphdriver] using prior storage driver: overlay2 
INFO[2022-10-13T03:09:21.925756838Z] Loading containers: start.                   
WARN[2022-10-13T03:09:21.946484213Z] Running iptables --wait -t nat -L -n failed with message: `iptables v1.8.7 (legacy): can't initialize iptables table `nat': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.`, error: exit status 3 
INFO[2022-10-13T03:09:22.252070713Z] stopping event stream following graceful shutdown  error="<nil>" module=libcontainerd namespace=moby
INFO[2022-10-13T03:09:22.253173921Z] stopping healthcheck following graceful shutdown  module=libcontainerd
INFO[2022-10-13T03:09:22.254884796Z] stopping event stream following graceful shutdown  error="context canceled" module=libcontainerd namespace=plugins.moby
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.7 (legacy): can't initialize iptables table `nat': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
 (exit status 3)

Information

  • macOS version: Monterey 12.6
  • Docker Desktop version: 4.12.0 (85629)
  • Docker Engine version: 20.10.17

Rename Feature 'docker from docker' to 'docker-outside-of-docker'

Hello. Thanks for a great series of work (which I use every day!)

This may be a stupid question, but isn't docker-outside-of-docker more common name than docker-from-docker for using the host machine's docker engine from within a container?
Why call it docker-from-docker in this project?

add bzip2 to common-utils

The following command throws bzip2 missing:

wget -O - https://anaconda.org/conda-forge/micromamba/0.25.1/download/linux-64/micromamba-0.25.1-0.tar.bz2 | tar -xvj -f - "bin/micromamba" --strip-components=1

--
There are other files extensions that maybe valuable to add too:

...
  -j, --bzip2                filter the archive through bzip2
  -J, --xz                   filter the archive through xz
      --lzip                 filter the archive through lzip
      --lzma                 filter the archive through xz
      --lzop                 filter the archive through lzop
      --no-auto-compress     do not use archive suffix to determine the
                             compression program
      --zstd                 filter the archive through zstd
  -z, --gzip, --gunzip, --ungzip   filter the archive through gzip
...

*xz, gzip, lzma, ... are already present.

apt install busybox has most of these formats too.

PR to solve it: #142
*Continuing microsoft/vscode-dev-containers#1586

[Feature] Headless browser (chrome/chromium/firefox)

I'd love if I could add a headless browser to my dev container using the dev container features.

"features": {
  "headless-chrome": "latest",
  "headless-chromium": "latest",
  "headless-firefox": "latest",
}

All (that I know) JS/TS testing frameworks need it. Manually adding it without having to resort to --no-sandbox is very complicated. I have yet to succeed at it ๐Ÿ˜ž
--no-sandbox is considered insecure and strongly discouraged.

Missing GPG Key when installing github cli

My Issue
GPG signing issue within my codespace even after setting :

"features": {
		"ghcr.io/devcontainers/features/github-cli:1": {}
	},

I my devcontainer.json

in my script called within postCreateCommand it has a sudo apt update where i get the gpg error:

2022-09-07 21:11:53.429Z: W: GPG error: https://cli.github.com/packages stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23F3D4EA75716059
2022-09-07 21:11:53.429Z: E: The repository 'https://cli.github.com/packages stable InRelease' is not signed.
2022-09-07 21:11:53.433Z: N: Updating from such a repository can't be done securely, and is therefore disabled by default.
2022-09-07 21:11:53.434Z: N: See apt-secure(8) manpage for repository creation and user configuration details.

My dockerfile is based off of:

FROM mcr.microsoft.com/vscode/devcontainers/universal:2-focal

Context
I have been referred to create an issue in this project from cli/cli#6175 by @joshspicer

Link To Original Comment I posted
Original Issue: cli/cli#6175 (comment)

JAVA_HOME is set even when the feature is set to none

When trying to setup a new container for Java/Gradle you get the following error: ERROR: JAVA_HOME is set to an invalid directory: /usr/local/sdkman/candidates/java/current

Steps to reproduce:

  1. Open empty directory in vscode
  2. Reopen in container
  3. Chose Java definition
    • Version 11
    • NodeJS => none
    • Install Gradle
  4. Run gradle in shell

The problem seems to be the JAVA_HOME that is being set even though we are not installing Java via the feature:

It is overriding the value set in the container definition: https://github.com/devcontainers/images/blob/main/src/java/.devcontainer/devcontainer.json#L13

vscode: 1.71.2
devcontainer extension: v0.251.0

Standardize `containerEnv` and edits to the $PATH variable

As seen in a recent PR (#153), the current pattern for editing important variables like $PATH are highly dependent on the technique the author chose to employ (editing *rc files, containerEnv properties), as well as the order in which both features and the declared variables are listed.

For consistency I believe we need to find a pattern (or perhaps invent some new attribute/concept in the devcontainer-feature.json) that allows us to safely and consistently apply container variables in a reproducible way.

The issue

Copied from #153 (comment)

I think this pattern that we've adopted here (using one containerEnv inside another) -might be dangerous moving forward, since I think that the order this object is emitted into the intermediate Dockerfile is important. Right now the tooling ends up emitting in the provided order

image

image

image

Notably, this output is different when using docker exec directly
image

Changing the order to:

    "containerEnv": {
        "PATH": "${PATH}:${CONDA_DIR}/bin",
        "CONDA_SCRIPT":"${CONDA_DIR}/etc/profile.d/conda.sh",
        "CONDA_DIR": "/opt/conda"
    }

The auto-generated test fails:
image

image

image

image

image

cc @jungaretti @devcontainers/maintainers

rename all options to be `camelCase` and not `snake_case`

To follow with JSON naming conventions, we should make all the options in the devcontainer-features.json camelCase.

Right now, options are converted to environment variables with this logic in the CLI.

"v2" features require environment variables of this form, which will get emitted by the tooling. The tranformation linked above converts what the user types in their devcontainer-feature.json to the env variable that is actually emitted by the tooling.

One solution is to sanitize and transform camelcase to CAPITAL_SNAKE_CASE at the capitalization boundaries.

dockerDashComposeVersion -> DOCKER_DASH_COMPOSE_VERSION.

This change alone would may not automatically be backwards compatible, thus we'll have to be careful with how it is implemented.

Error: connect ETIMEDOUT

I am using default Debian with terraform and git enabled:

// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/debian
{
	"name": "Debian",
	"build": {
		"dockerfile": "Dockerfile",
		// Update 'VARIANT' to pick an Debian version: bullseye, buster
		// Use bullseye on local arm64/Apple Silicon.
		"args": {
			"VARIANT": "bullseye"
		}
	},
	// Use 'forwardPorts' to make a list of ports inside the container available locally.
	// "forwardPorts": [],
	// Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker.
	// "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ],
	// Uncomment when using a ptrace-based debugger like C++, Go, and Rust
	// "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
	// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
	"remoteUser": "vscode",
	"features": {
		"terraform": "latest",
		"git": "latest"
	}
}
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/debian/.devcontainer/base.Dockerfile

# [Choice] Debian version (use bullseye on local arm64/Apple Silicon): bullseye, buster
ARG VARIANT="buster"
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}

# ** [Optional] Uncomment this section to install additional packages. **
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
#     && apt-get -y install --no-install-recommends <your-package-list-here>

And I am getting error:

[2022-09-27T06:43:40.890Z] * Processing feature: terraform
[2022-09-27T06:43:41.513Z] * Fetching feature: terraform_1_oci
[2022-09-27T06:45:53.490Z] error: Error: connect ETIMEDOUT 198.51.44.1:443
[2022-09-27T06:45:53.491Z] (!) ERR: Failed to fetch feature: Failed to download package for ghcr.io/devcontainers/features/terraform 
[2022-09-27T06:45:54.668Z] Error: Failed to download package for ghcr.io/devcontainers/features/terraform
[2022-09-27T06:45:54.669Z]     at M0 (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:155:7434)
[2022-09-27T06:45:54.669Z]     at processTicksAndRejections (node:internal/process/task_queues:96:5)
[2022-09-27T06:45:54.670Z]     at async nF (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:188:7406)
[2022-09-27T06:45:54.671Z]     at async uc (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:188:2448)
[2022-09-27T06:45:54.671Z]     at async Zs (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:188:12771)
[2022-09-27T06:45:54.671Z]     at async OF (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:257:3261)
[2022-09-27T06:45:54.671Z]     at async Wf (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:257:2801)
[2022-09-27T06:45:54.672Z]     at async pb (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:257:1779)
[2022-09-27T06:45:54.672Z]     at async DF (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:263:2006)
[2022-09-27T06:45:54.672Z]     at async to (/home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js:263:3110)
[2022-09-27T06:45:54.676Z] Stop (132837 ms): Run in Host: /home/lukas/.vscode-server/bin/74b1f979648cc44d385a2286793c226e611f59e7/node /home/lukas/.vscode-remote-containers/dist/dev-containers-cli-0.251.0/dist/spec-node/devContainersSpecCLI.js up --workspace-folder /home/lukas/projects/github-settings --workspace-mount-consistency cached --id-label devcontainer.local_folder=\\wsl.localhost\Ubuntu-20.04\home\lukas\projects\github-settings --log-level debug --log-format json --config /home/lukas/projects/github-settings/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[2022-09-27T06:45:54.677Z] Exit code 1

I was able to run similar configuration before, but now building fails.

I am running VSCode from WSL2
image

Adding jupyterlab to python:3.10-bullseye image

Hello! Not really sure if this is an issue for here for devcontainers/images, but I'm having some trouble figuring out how to add jupyterlab to the mcr.microsoft.com/devcontainers/python:3.10-bullseye image using the new features. This worked fine before when jupyterlab was its own feature, but now that it's been moved into the overall python feature I haven't been able to get it to work. I tried this, but it errors out:

	"features": {
		"ghcr.io/devcontainers/features/python:1": {
			"version": "none",
			"installTools": false,
			"installJupyterlab": true
		}
	}

Error

  #32 [linux/amd64 dev_containers_target_stage 7/8] RUN cd /tmp/build-features/python_2 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh
  #0 0.062 ===========================================================================
  #0 0.062 Feature       : Python 
  [333840 ms] #32 0.065 Description   : Installs the provided version of Python, as well as PIPX, and other common Python utilities.  JupyterLab is conditionally installed with the python feature. Note: May require source code compilation.
  #32 0.065 Id            : ghcr.io/devcontainers/features/python
  #32 0.065 Version       : 1.0.9
  #32 0.065 Documentation : https://github.com/devcontainers/features/tree/main/src/python
  #32 0.065 Options       :
  #32 0.066     VERSION="none"
  #32 0.066     INSTALLTOOLS="false"
  #32 0.066     OPTIMIZE="false"
  #32 0.066     INSTALLPATH="/usr/local/python"
  #32 0.066     INSTALLJUPYTERLAB="true"
  #32 0.066     CONFIGUREJUPYTERLABALLOWORIGIN=""
  #32 0.066 ===========================================================================
  #32 0.118 -bash: line 1: /bin/python3: No such file or directory
  #32 0.120 ERROR: Feature "Python" (ghcr.io/devcontainers/features/python) failed to install! Look at the documentation at https://github.com/devcontainers/features/tree/main/src/python for help troubleshooting this error.
  #32 ERROR: process "/bin/bash -c cd /tmp/build-features/python_2 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh" did not complete successfully: exit code: 127

Any recommendations on how to do this?

`sshd` fails to install intermittently

From an internal report:

We recently add "features": { "sshd": "latest" } to our devcontainer and have since run into periodic build failures due its related packages not being found. It looks like the sshd_debian.sh script has some logic to conditionally skip apt-update, which I think may be the issue.

Logs:

#12 [stage-0 2/3] COPY --from=dev_containers_feature_content_source . /tmp/build-features/
#12 DONE 0.2s
#13 [stage-0 3/3] RUN cd /tmp/build-features/sshd_1 && chmod +x ./install.sh && ./install.sh
#13 1.211 (*) Script: sshd-debian.sh
#13 1.270 Skipping apt-get update.
#13 1.326 Reading package lists...
#13 1.964 Building dependency tree...
#13 2.078 Reading state information...
#13 2.238 openssh-client is already the newest version (1:8.4p1-5).
#13 2.238 The following packages were automatically installed and are no longer required:
#13 2.239   libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libmariadb3
#13 2.239   libterm-readkey-perl mariadb-common
#13 2.239 Use 'apt autoremove' to remove them.
#13 2.239 The following additional packages will be installed:
#13 2.240   libwrap0 openssh-sftp-server runit-helper
#13 2.240 Suggested packages:
#13 2.240   molly-guard monkeysphere ssh-askpass ufw
#13 2.240 Recommended packages:
#13 2.240   default-logind | logind | libpam-systemd ncurses-term xauth
#13 2.343 The following NEW packages will be installed:
#13 2.344   libwrap0 lsof openssh-server openssh-sftp-server runit-helper
#13 2.408 0 upgraded, 5 newly installed, 0 to remove and 8 not upgraded.
#13 2.408 Need to get 824 kB of archives.
#13 2.408 After this operation, 2339 kB of additional disk space will be used.
#13 2.408 Get:1 http://deb.debian.org/debian bullseye/main amd64 lsof amd64 4.93.2+dfsg-1.1 [319 kB]
#13 2.431 Get:2 http://deb.debian.org/debian bullseye/main amd64 libwrap0 amd64 7.6.q-31 [59.0 kB]
#13 2.625 Err:3 http://deb.debian.org/debian bullseye/main amd64 openssh-sftp-server amd64 1:8.4p1-5
#13 2.625   404  Not Found [IP: 146.75.30.132 80]
#13 2.625 Get:4 http://deb.debian.org/debian bullseye/main amd64 runit-helper all 2.10.3 [7808 B]
#13 2.626 Get:5 http://deb.debian.org/debian bullseye/main amd64 openssh-server amd64 1:8.4p1-5 [385 kB]
#13 2.651 E: Failed to fetch http://deb.debian.org/debian/pool/main/o/openssh/openssh-sftp-server_8.4p1-5_amd64.deb  404  Not Found [IP: 146.75.30.132 80]
#13 2.651 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
#13 2.651 Fetched 771 kB in 0s (2622 kB/s)
Error: Process completed with exit code 1.

Go doesn't update version if go is already installed

The go feature ignores the current version, and the version option specified, when go is already installed.

Steps to reproduce

Create a .devcontainer as below

{
    "features": {
        "ghcr.io/devcontainers/features/go:1": {
            "version": "1.18"
        }
    }
}

Start a codespace using the universal container image which already has go installed

At the terminal note that the version of go does NOT match the option specified in the go feature

$ go version
go version go1.19.2 linux/amd64

Check the creation logs and note it says Go already installed. Skipping

2022-10-07 23:22:30.315Z: #13 [dev_containers_target_stage 3/3] RUN cd /tmp/build-features/go_1 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh
2022-10-07 23:22:30.931Z: #13 0.617 ===========================================================================
2022-10-07 23:22:30.931Z: #13 0.617 Feature       : Go
2022-10-07 23:22:30.931Z: #13 0.617 Description   : Installs Go and common Go utilities. Auto-detects latest version and installs needed dependencies.
2022-10-07 23:22:30.931Z: #13 0.617 Id            : ghcr.io/devcontainers/features/go
2022-10-07 23:22:30.931Z: 
2022-10-07 23:22:30.931Z: #13 0.617 Version       : 1.0.7
2022-10-07 23:22:30.931Z: #13 0.617 Documentation : https://github.com/devcontainers/features/tree/main/src/go
2022-10-07 23:22:30.931Z: #13 0.617 Options       :
2022-10-07 23:22:30.931Z: #13 0.617     VERSION="1.18"
2022-10-07 23:22:30.931Z: #13 0.617 ===========================================================================
2022-10-07 23:22:32.722Z: #13 2.416 TARGET_GO_VERSION=1.18.7
2022-10-07 23:22:32.861Z: #13 2.573 Go already installed. Skipping.

Expected result

At terminal

$ go version
go version go1.18.x linux/amd64

Go: Testing tab is empty

Go extension cannot discover the tests in a devcontainer.

I have tried it with different go versions and various projects.

Tag feature releases?

@joshspicer @samruddhikhandale Should feature releases be tagged in the Git repo? I don't see how I would currently navigate from an OCI artifact to the commit it was created from. We usually use tags for that. What do you think?

Failed to download package for ghcr.io/devcontainers/features/azure-cli

I might be being terribly unlucky, but I keep getting timeouts when I try to download the azure-cli feature. Is this an issue with GitHub packages or is this a general problem?

[132380 ms] * Processing feature: ghcr.io/devcontainers/features/azure-cli:1
[132999 ms] * Fetching feature: azure-cli_1_oci
[165788 ms] error: Error: connect ETIMEDOUT 205.251.192.181:443
[165788 ms] (!) ERR: Failed to fetch feature: Failed to download package for ghcr.io/devcontainers/features/azure-cli 
[165788 ms] Error: Failed to download package for ghcr.io/devcontainers/features/azure-cli
    at YP (/home/johnnyreilly/.vscode-remote-containers/dist/dev-containers-cli-0.255.3/dist/spec-node/devContainersSpecCLI.js:1729:9596)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ise (/home/johnnyreilly/.vscode-remote-containers/dist/dev-containers-cli-0.255.3/dist/spec-node/devContainersSpecCLI.js:1787:8267)
    at async dm (/home/johnnyreilly/.vscode-remote-containers/dist/dev-containers-cli-0.255.3/dist/spec-node/devContainersSpecCLI.js:1787:2465)
    at async _ae (/home/johnnyreilly/.vscode-remote-containers/dist/dev-containers-cli-0.255.3/dist/spec-node/devContainersSpecCLI.js:1994:26640)
[165792 ms] Exit code 1

My devcontainer.json looks like this:

"features": {
		"ghcr.io/devcontainers/features/azure-cli:1": {
			"version": "latest"
		}
	}

Extensions and settings for vscode in old locations

It looks like the extensions and settings for VS Code are at the top level rather than under customizations.vscode.

Running...

devcontainer read-configuration --include-features-configuration --log-format json --workspace-folder .

...does not show the extensions or settings, which implies they may not be getting picked up.

Error: Failed to process feature ghcr.io/devcontainers/features/docker-from-docker:1

I can't install the docker-from-docker feature. I tried the configuration snippet provided in the README.

  "features": {
    "ghcr.io/devcontainers/features/docker-from-docker:1": {
      "version": "latest"
    }
  }

When building the the devcontainer i get the error Error: Failed to process feature ghcr.io/devcontainers/features/docker-from-docker:1

[2022-09-13T12:12:14.568Z] * Processing feature: ghcr.io/devcontainers/features/docker-from-docker:1
[2022-09-13T12:12:14.604Z] Failed to get registry auth token with error: Error: read ECONNRESET
[2022-09-13T12:12:14.614Z] (!) WARNING: Falling back to deprecated GitHub Release syntax. See https://github.com/devcontainers/spec/blob/main/proposals/devcontainer-features.md#referencing-a-feature for updated specification.
[2022-09-13T12:12:14.614Z] Github feature.
[2022-09-13T12:12:14.614Z] Invalid parse for GitHub Release feature: Follow format '<publisher>/<feature-set>/<feature>, or republish feature to OCI registry.'
[2022-09-13T12:12:14.615Z] Error: Failed to process feature ghcr.io/devcontainers/features/docker-from-docker:1
[2022-09-13T12:12:14.616Z]     at QR (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:188:2956)
[2022-09-13T12:12:14.616Z]     at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
[2022-09-13T12:12:14.616Z]     at async uc (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:188:2279)
[2022-09-13T12:12:14.616Z]     at async Zs (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:188:12771)
[2022-09-13T12:12:14.616Z]     at async OF (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:257:3261)
[2022-09-13T12:12:14.616Z]     at async Wf (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:257:2801)
[2022-09-13T12:12:14.617Z]     at async pb (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:257:1779)
[2022-09-13T12:12:14.617Z]     at async DF (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:263:2006)
[2022-09-13T12:12:14.617Z]     at async to (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:263:3110)
[2022-09-13T12:12:14.617Z]     at async Ak (/home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js:383:8108)
[2022-09-13T12:12:14.619Z] Stop (402 ms): Run: /usr/share/code/code --ms-enable-electron-run-as-node /home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /home/oizlus/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --docker-path /usr/bin/docker --workspace-folder /home/oizlus/Code/cmp-sdlc.stzh.ch/cisco_aci_operation --workspace-mount-consistency cached --id-label devcontainer.local_folder=/home/oizlus/Code/cmp-sdlc.stzh.ch/cisco_aci_operation --log-level debug --log-format json --config /home/oizlus/Code/cmp-sdlc.stzh.ch/cisco_aci_operation/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --build-no-cache --remove-existing-container --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[2022-09-13T12:12:14.620Z] Exit code 1
[2022-09-13T12:12:14.629Z] Command failed: /usr/share/code/code --ms-enable-electron-run-as-node /home/oizlus/.vscode/extensions/ms-vscode-remote.remote-containers-0.251.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /home/oizlus/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data --docker-path /usr/bin/docker --workspace-folder /home/oizlus/Code/cmp-sdlc.stzh.ch/cisco_aci_operation --workspace-mount-consistency cached --id-label devcontainer.local_folder=/home/oizlus/Code/cmp-sdlc.stzh.ch/cisco_aci_operation --log-level debug --log-format json --config /home/oizlus/Code/cmp-sdlc.stzh.ch/cisco_aci_operation/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --build-no-cache --remove-existing-container --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[2022-09-13T12:12:14.629Z] Exit code 1

Building the devcontainer without the feature is successful.

`docker-from-docker`: processes inside the container can't access ports forwarded from the docker bridge network

When running docker-from-docker, if a container maps a port to the bridge network, I'd expect to be able to open another terminal and hit that port. Instead, the port is exposed outside of the dev container, but remains inaccessible inside of it, which breaks development setups that mix dockerized and non-dockerized services. Here's a minimal reproduction.

I saw this bug using:

Host: macOS 12.3.1
Visual Studio Code: 1.71.2
Docker Host: Desktop 4.12.0, Engine 20.10.17
Remote Containers Extension: v0.252.0

Port forwarding works as expected both inside and outside of the container when using docker-in-docker instead of docker-from-docker.

Go feature does not add `$GOPATH/bin` to the `PATH`

Repro: https://github.com/davidwallacejackson/go-path-repro

I think this issue happens because $GOROOT/bin has already been added to PATH somehow before these injected rc lines are run. Because the default GOROOT is /usr/local/go, the path to its bindirectory is/usr/local/go/bin, which contains /go/bin-- which then causes the match"${GOPATH}/bin"to pass erroneously (since/go/bincan be found in thePATH` string). This might be fixable just by using a regex for the match instead.

This is another example of something that would be solved by #155

Polish the descriptions

We're working on a user experience to surface Features and present the description attribute in each Feature's devcontainer-feature.json

In order to make the UX look more clean, it's worth taking some time to polish up the descriptions, (make them as succinct and useful as possible).

Provide a feature that can install azure cli extensions

I would like to be able to instal the azure cli and some extra extensions for example az extension add --name spring it would be nice to enhance the existing cli feature to set a list of extensions to install, or maybe add an azure cli extension feature that takes an array of extension names and installs them.

The blog post show to build such a feature. However, installing azure cli extensions so common it should be officially supported.

devcontainer.json stop functioning properly after last VSCode update

Some directives from devcontainer.json ceased to execute. They worked fine before the last VSCode update.

  1. Extensions are not installed (though they are listed)
"customizations": {
	"vscode": {
		"extensions": [
			"burkeholland.simple-react-snippets",
			"esbenp.prettier-vscode",
			"dbaeumer.vscode-eslint",
			"NuclleaR.vscode-extension-auto-import"
		]
	}
}
  1. Shutdown actions and post create commands are also ignored:
"shutdownAction": "none",
"postCreateCommand": "python -m pip install -U pytest pytest-django autopep8"

VSCode Vesrion - 1.72.0
OS where the issue happens

  • Kali Linux
  • MacOs
    (Both OS are updated)

Hugo: Add option for extended release

In addition to version, operating system, and architecture the hugo release packages are distinguished by whether or not they're "extended," which enables post-processing behavior and using SASS/SCSS. Numerous hugo themes rely on this functionality and are currently unusable with the feature, which is only capable of installing non-extended hugo.

The current definition for options is:

"options": {
"version": {
"type": "string",
"proposals": [
"latest"
],
"default": "latest",
"description": "Select or enter a version."
}
},

I propose it be updated to this:

"options": {
  "version": {
    "type": "string",
    "proposals": [
      "latest"
    ],
    "default": "latest",
    "description": "Select or enter a version."
  },
  "extended": {
    "type": "boolean",
    "default": false,
    "description": "Choose whether to install hugo extended."
  }
}

Then, instead of:

# Install ARM or x86 version of hugo based on current machine architecture
if [ "$(uname -m)" == "aarch64" ]; then
arch="ARM64"
else
arch="64bit"
fi
hugo_filename="hugo_${VERSION}_Linux-${arch}.tar.gz"

It would be:

# Install ARM or x86 version of hugo based on current machine architecture
if [ "$(uname -m)" == "aarch64" ]; then
    arch="ARM64"
else
    arch="64bit"
fi

# Install extended version of hugo if desired
if [ "${EXTENDED}" = "true" ]; then
    extended="extended_"
else
    extended=""
fi

hugo_filename="hugo_${extended}${VERSION}_Linux-${arch}.tar.gz"

docker daemon does not seem to be started

Hello. Thanks for your work (I use your features every day!).

But since today I have a problem with the docker-in-docker feature.
Strangely, the docker service does not seem to run.

I rebuilt my dev env. And when I do: devcontainer features test --features vim --base-image mcr.microsoft.com/devcontainers/base:ubuntu .

I have this output
โ”Œ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”
|    dev container 'features' |   
โ”‚           v0.14.2           โ”‚
โ”” โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”€ โ”˜

>  baseImage:         mcr.microsoft.com/devcontainers/base:ubuntu
>  Target Folder:     /workspaces/features
>  features:          vim
>  workspaceFolder:   /tmp/vsch/container-features-test/1663354490504

โณ Building test container...

[2 ms] @devcontainers/cli 0.14.2.
[-] Failed to launch container:

Command failed: docker ps -q -a --filter label=devcontainer.local_folder=/tmp/vsch/container-features-test/1663354490504
error: Recipe `test` failed on line 17 with exit code 1

After some research, I try to make docker image ls and I have this error:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

I don't know if it's my host machine or the feature that no longer works. Because last week it was working fine!
If you want to test the case, here is my project https://github.com/guiyomh/features.

start the devcontainer and try to run just test vim

how to best add bicep, flux and kubelogin to devcontainer?

Hi, looking for some pointers on how to best approach this. At this point, my postCreateCommand looks like this for devcontainer with azure-cli and kubectl-helm-minikube features.

"postCreateCommand": "az bicep install && az extension add --name ssh && az extension add --name aks-preview && wget https://github.com/Azure/kubelogin/releases/download/v0.0.20/kubelogin-linux-amd64.zip && unzip kubelogin-linux-amd64.zip && sudo mv bin/linux_amd64/kubelogin /usr/local/bin/ && rm kubelogin-linux-amd64.zip && rm -rf bin && curl -s https://fluxcd.io/install.sh | bash"

I see #149 can help with az cli extensions, but it should be easier to add "commands" to features.

I've considered adding functionality to kubectl-helm-minikube, but I'm thinking we'd be better off with a more generic feature name for cloud native/kubernetes? Flux is more niche, but kubelogin is about to become mandatory for AKS when using Azure AD so it should also probably be considered to be deployed together with kubectl.

Thanks!

github-cli : Fails with signature invalid error

github-cli Feature fails to install with the following error.

image

This error is due to the GPG key used to sign debian packages is expired. Upstream issue --> cli/cli#6175

Once the upstream GPG key is updated, it also needs to be modfied in this github-cli Feature.

Features implementation breaks buildkit Dockerfile by stripping `# syntax=docker/dockerfile:1` line

I have a .devcontainer/Dockerfile using buildkit with the starting line, # syntax=docker/dockerfile:1. It has been working for the past several versions of vscode. Since updating to v1.72.0 my devcontainer fails to run.

When starting my devcontainer, vscode runs:
docker-compose --project-namemyproject -f /path/to/compose.yaml -f /Users/me/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers/data/docker-compose/docker-compose.devcontainer.build-1665287802265.yml build

That generated config file looks like:

services:
  devcontainer:
    build:
      dockerfile: /var/folders/zf/3lppq14565594kgv2_7chsx40000gn/T/devcontainercli/container-features/0.19.0-1665287801705/Dockerfile-with-features
      target: dev_containers_target_stage
      args:
        - BUILDKIT_INLINE_CACHE=1
        - _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label
        - _DEV_CONTAINERS_IMAGE_USER=root
        - _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp

And the dockerfile it references is a modified copy of my original Dockerfile, however the # syntax=docker/dockerfile:1 has been stripped, resulting in the error:
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: dockerfile parse error line 13: unknown instruction: SET

Modifying the referenced Dockerfile-with-features and adding back in the # syntax=docker/dockerfile:1 allows the build command to proceed from the command line, however vscode will generate a different set of paths if I try to build the container in-app so the issue will repeat.

The specific part of my Dockerfile it is choking on without the # syntax line is a RUN heredoc: https://www.docker.com/blog/introduction-to-heredocs-in-dockerfiles/

Note that I am not actually using Features in my devcontainer.json.

Apologies if this is better suited in the vscode Issuesโ€”please direct me to the appropriate repository.

Version: 1.72.0
Commit: 64bbfbf67ada9953918d72e1df2f4d8e537d340e
Date: 2022-10-04T23:19:55.212Z
Electron: 19.0.17
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: 10.2.154.15-electron.0
OS: Darwin arm64 21.6.0
Sandboxed: No

Dev Containers: v0.255.2


Docker desktop: macOS 4.12.0 (85629)
Engine: 20.10.17
Compose: v2.10.2

[java] SDKMAN errors on build: Version 11 not found

Hi,

Im trying to use the following .devcontainer configuration and finding that errors are produced when installing with SDKMAN.

Weirdly, the problem does not exist when I'm running the configuration on Mac/Linux, and I only see the problem when running VSCode on Windows and in WSL2

.devcontainer/devcontainer.json

{
	"name": "DevContainer",
	"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
	"features": {
		"ghcr.io/devcontainers/features/java:1": {
			"version": "11",
			"installMaven": true
		}
	},
	"remoteUser": "vscode"
}

Error produced

[+] Building 108.2s (13/13) FINISHED                                            
 => [internal] load build definition from Dockerfile.extended              0.1s
 => => transferring dockerfile: 749B                                       0.0s
 => [internal] load .dockerignore                                          0.1s
 => => transferring context: 2B                                            0.0s
 => resolve image config for docker.io/docker/dockerfile:1.4              23.7s
 => [auth] docker/dockerfile:pull token for registry-1.docker.io           0.0s
 => CACHED docker-image://docker.io/docker/dockerfile:1.4@sha256:9ba7531b  0.0s
 => [internal] load build definition from Dockerfile.extended              0.0s
 => [internal] load .dockerignore                                          0.0s
 => [internal] load metadata for mcr.microsoft.com/devcontainers/base:ubu  0.0s
 => [context dev_containers_feature_content_source] load .dockerignore     0.0s
 => => transferring dev_containers_feature_content_source: 2B              0.0s
 => [context dev_containers_feature_content_source] load from client       0.0s
 => => transferring dev_containers_feature_content_source: 298.74kB        0.0s
 => CACHED [dev_containers_target_stage 1/3] FROM mcr.microsoft.com/devco  0.0s
 => [dev_containers_target_stage 2/3] COPY --from=dev_containers_feature_  0.1s
 => ERROR [dev_containers_target_stage 3/3] RUN cd /tmp/build-features/j  84.0s
------                                                                          
 > [dev_containers_target_stage 3/3] RUN cd /tmp/build-features/java_1 && set -a && . ./devcontainer-features.env && set +a && chmod +x ./install.sh && ./install.sh:
#0 12.85                                                                        
#0 12.85                                 -+syyyyyyys:                           
#0 12.85                             `/yho:`       -yd.                         
#0 12.85                          `/yh/`             +m.
#0 12.85                        .oho.                 hy                          .`
#0 12.85                      .sh/`                   :N`                `-/o`  `+dyyo:.
#0 12.85                    .yh:`                     `M-          `-/osysoym  :hs` `-+sys:      hhyssssssssy+
#0 12.85                  .sh:`                       `N:          ms/-``  yy.yh-      -hy.    `.N-````````+N.
#0 12.85                `od/`                         `N-       -/oM-      ddd+`     `sd:     hNNm        -N:
#0 12.85               :do`                           .M.       dMMM-     `ms.      /d+`     `NMMs       `do
#0 12.85             .yy-                             :N`    ```mMMM.      -      -hy.       /MMM:       yh
#0 12.85           `+d+`           `:/oo/`       `-/osyh/ossssssdNMM`           .sh:         yMMN`      /m.
#0 12.85          -dh-           :ymNMMMMy  `-/shmNm-`:N/-.``   `.sN            /N-         `NMMy      .m/
#0 12.85        `oNs`          -hysosmMMMMydmNmds+-.:ohm           :             sd`        :MMM/      yy
#0 12.85       .hN+           /d:    -MMMmhs/-.`   .MMMh   .ss+-                 `yy`       sMMN`     :N.
#0 12.85      :mN/           `N/     `o/-`         :MMMo   +MMMN-         .`      `ds       mMMh      do
#0 12.85     /NN/            `N+....--:/+oooosooo+:sMMM:   hMMMM:        `my       .m+     -MMM+     :N.
#0 12.85    /NMo              -+ooooo+/:-....`...:+hNMN.  `NMMMd`        .MM/       -m:    oMMN.     hs
#0 12.85   -NMd`                                    :mm   -MMMm- .s/     -MMm.       /m-   mMMd     -N.
#0 12.85  `mMM/                                      .-   /MMh. -dMo     -MMMy        od. .MMMs..---yh
#0 12.85  +MMM.                                           sNo`.sNMM+     :MMMM/        sh`+MMMNmNm+++-
#0 12.85  mMMM-                                           /--ohmMMM+     :MMMMm.       `hyymmmdddo
#0 12.85  MMMMh.                  ````                  `-+yy/`yMMM/     :MMMMMy       -sm:.``..-:-.`
#0 12.85  dMMMMmo-.``````..-:/osyhddddho.           `+shdh+.   hMMM:     :MmMMMM/   ./yy/` `:sys+/+sh/
#0 12.85  .dMMMMMMmdddddmmNMMMNNNNNMMMMMs           sNdo-      dMMM-  `-/yd/MMMMm-:sy+.   :hs-      /N`
#0 12.85   `/ymNNNNNNNmmdys+/::----/dMMm:          +m-         mMMM+ohmo/.` sMMMMdo-    .om:       `sh
#0 12.85      `.-----+/.`       `.-+hh/`         `od.          NMMNmds/     `mmy:`     +mMy      `:yy.
#0 12.85            /moyso+//+ossso:.           .yy`          `dy+:`         ..       :MMMN+---/oys:
#0 12.85          /+m:  `.-:::-`               /d+                                    +MMMMMMMNh:`
#0 12.85         +MN/                        -yh.                                     `+hddhy+.
#0 12.85        /MM+                       .sh:
#0 12.85       :NMo                      -sh/
#0 12.85      -NMs                    `/yy:
#0 12.85     .NMy                  `:sh+.
#0 12.85    `mMm`               ./yds-
#0 12.85   `dMMMmyo:-.````.-:oymNy:`
#0 12.85   +NMMMMMMMMMMMMMMMMms:`
#0 12.85     -+shmNMMMNmdy+:`
#0 12.85 
#0 12.85 
#0 12.85                                                                  Now attempting installation...
#0 12.85 
#0 12.85 
#0 12.85 Looking for a previous installation of SDKMAN...
#0 12.85 Looking for unzip...
#0 12.85 Looking for zip...
#0 12.85 Looking for curl...
#0 12.85 Looking for sed...
#0 12.85 Installing SDKMAN scripts...
#0 12.85 Create distribution directories...
#0 12.85 Getting available candidates...
#0 24.96 Prime the config file...
#0 24.96 Installing script cli archive...
#0 24.96 * Downloading...
######################################################################## 100.0%        
#0 48.85 * Checking archive integrity...
#0 48.85 * Extracting archive...
#0 48.86 * Copying archive contents...
#0 48.86 * Cleaning up...
#0 48.86 
#0 48.86 * Downloading...
######################################################################## 100.0%        
#0 72.75 * Checking archive integrity...
#0 72.77 * Extracting archive...
#0 72.79 * Copying archive contents...
#0 72.79 * Cleaning up...
#0 72.80 
#0 72.80 Set version to 5.16.0 ...
#0 72.80 Set native version to 0.0.15 ...
#0 72.80 
#0 72.80 
#0 72.80 
#0 72.80 All done!
#0 72.80 
#0 72.80 
#0 72.80 You are subscribed to the STABLE channel.
#0 72.80 
#0 72.80 Please open a new terminal, or run the following in the existing one:
#0 72.80 
#0 72.80     source "/usr/local/sdkman/bin/sdkman-init.sh"
#0 72.80 
#0 72.80 Then issue the following command:
#0 72.80 
#0 72.80     sdk help
#0 72.80 
#0 72.80 Enjoy!!!
#0 72.80 Updating /etc/bash.bashrc and /etc/zsh/zshrc...
#0 83.98 Version 11 not found. Available versions:
#0 83.98 
------
error: failed to solve: executor failed running [/bin/sh -c cd /tmp/build-features/java_1 && set -a && . ./devcontainer-features.env && set +a && chmod +x ./install.sh && ./install.sh]: exit code: 

When running the same config with latest instead for Java version, a slightly different error is produced.

 => ERROR [dev_containers_target_stage 3/3] RUN cd /tmp/build-features/j  83.9s
------                                                                          
 > [dev_containers_target_stage 3/3] RUN cd /tmp/build-features/java_1 && set -a && . ./devcontainer-features.env && set +a && chmod +x ./install.sh && ./install.sh:                                                                              
#0 12.68                                                                        
#0 12.68                                 -+syyyyyyys:                           
#0 12.68                             `/yho:`       -yd.                         
#0 12.68                          `/yh/`             +m.
#0 12.68                        .oho.                 hy                          .`
#0 12.68                      .sh/`                   :N`                `-/o`  `+dyyo:.
#0 12.68                    .yh:`                     `M-          `-/osysoym  :hs` `-+sys:      hhyssssssssy+
#0 12.68                  .sh:`                       `N:          ms/-``  yy.yh-      -hy.    `.N-````````+N.
#0 12.68                `od/`                         `N-       -/oM-      ddd+`     `sd:     hNNm        -N:
#0 12.68               :do`                           .M.       dMMM-     `ms.      /d+`     `NMMs       `do
#0 12.68             .yy-                             :N`    ```mMMM.      -      -hy.       /MMM:       yh
#0 12.68           `+d+`           `:/oo/`       `-/osyh/ossssssdNMM`           .sh:         yMMN`      /m.
#0 12.68          -dh-           :ymNMMMMy  `-/shmNm-`:N/-.``   `.sN            /N-         `NMMy      .m/
#0 12.68        `oNs`          -hysosmMMMMydmNmds+-.:ohm           :             sd`        :MMM/      yy
#0 12.68       .hN+           /d:    -MMMmhs/-.`   .MMMh   .ss+-                 `yy`       sMMN`     :N.
#0 12.68      :mN/           `N/     `o/-`         :MMMo   +MMMN-         .`      `ds       mMMh      do
#0 12.68     /NN/            `N+....--:/+oooosooo+:sMMM:   hMMMM:        `my       .m+     -MMM+     :N.
#0 12.68    /NMo              -+ooooo+/:-....`...:+hNMN.  `NMMMd`        .MM/       -m:    oMMN.     hs
#0 12.68   -NMd`                                    :mm   -MMMm- .s/     -MMm.       /m-   mMMd     -N.
#0 12.68  `mMM/                                      .-   /MMh. -dMo     -MMMy        od. .MMMs..---yh
#0 12.68  +MMM.                                           sNo`.sNMM+     :MMMM/        sh`+MMMNmNm+++-
#0 12.68  mMMM-                                           /--ohmMMM+     :MMMMm.       `hyymmmdddo
#0 12.68  MMMMh.                  ````                  `-+yy/`yMMM/     :MMMMMy       -sm:.``..-:-.`
#0 12.68  dMMMMmo-.``````..-:/osyhddddho.           `+shdh+.   hMMM:     :MmMMMM/   ./yy/` `:sys+/+sh/
#0 12.68  .dMMMMMMmdddddmmNMMMNNNNNMMMMMs           sNdo-      dMMM-  `-/yd/MMMMm-:sy+.   :hs-      /N`
#0 12.68   `/ymNNNNNNNmmdys+/::----/dMMm:          +m-         mMMM+ohmo/.` sMMMMdo-    .om:       `sh
#0 12.68      `.-----+/.`       `.-+hh/`         `od.          NMMNmds/     `mmy:`     +mMy      `:yy.
#0 12.68            /moyso+//+ossso:.           .yy`          `dy+:`         ..       :MMMN+---/oys:
#0 12.68          /+m:  `.-:::-`               /d+                                    +MMMMMMMNh:`
#0 12.68         +MN/                        -yh.                                     `+hddhy+.
#0 12.68        /MM+                       .sh:
#0 12.68       :NMo                      -sh/
#0 12.68      -NMs                    `/yy:
#0 12.68     .NMy                  `:sh+.
#0 12.68    `mMm`               ./yds-
#0 12.68   `dMMMmyo:-.````.-:oymNy:`
#0 12.68   +NMMMMMMMMMMMMMMMMms:`
#0 12.68     -+shmNMMMNmdy+:`
#0 12.68 
#0 12.68 
#0 12.68                                                                  Now attempting installation...
#0 12.68 
#0 12.68 
#0 12.68 Looking for a previous installation of SDKMAN...
#0 12.68 Looking for unzip...
#0 12.68 Looking for zip...
#0 12.68 Looking for curl...
#0 12.68 Looking for sed...
#0 12.68 Installing SDKMAN scripts...
#0 12.68 Create distribution directories...
#0 12.69 Getting available candidates...
#0 24.66 Prime the config file...
#0 24.66 Installing script cli archive...
#0 24.66 * Downloading...
######################################################################## 100.0%        
#0 48.72 * Checking archive integrity...
#0 48.73 * Extracting archive...
#0 48.73 * Copying archive contents...
#0 48.73 * Cleaning up...
#0 48.73 
#0 48.73 * Downloading...
######################################################################## 100.0%        
#0 72.66 * Checking archive integrity...
#0 72.68 * Extracting archive...
#0 72.70 * Copying archive contents...
#0 72.70 * Cleaning up...
#0 72.70 
#0 72.70 Set version to 5.16.0 ...
#0 72.70 Set native version to 0.0.15 ...
#0 72.70 
#0 72.70 
#0 72.70 
#0 72.70 All done!
#0 72.70 
#0 72.70 
#0 72.70 You are subscribed to the STABLE channel.
#0 72.70 
#0 72.71 Please open a new terminal, or run the following in the existing one:
#0 72.71 
#0 72.71     source "/usr/local/sdkman/bin/sdkman-init.sh"
#0 72.71 
#0 72.71 Then issue the following command:
#0 72.71 
#0 72.71     sdk help
#0 72.71 
#0 72.71 Enjoy!!!
#0 72.71 Updating /etc/bash.bashrc and /etc/zsh/zshrc...
#0 83.88 ==== INTERNET NOT REACHABLE! ===================================================
#0 83.88 
#0 83.88  Some functionality is disabled or only partially available.
#0 83.88  If this persists, please enable the offline mode:
#0 83.88 
#0 83.89    $ sdk offline
#0 83.89 
#0 83.89 ================================================================================
#0 83.89 
#0 83.89 This command is not available while offline.

Environment

Remote - Containers v0.251.0
VSCode Version: 1.71.0
Docker Desktop v4.11.1

$ uname -a
Linux alfie 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Remove apt lists (`/var/lib/apt/lists/*`) the end of each scripts?

Previously, a mechanism was implemented in each script to reduce the number of apt-get update, so that only one apt-get update was needed to install multiple features.
However, that mechanism has now been removed, so it may make more sense to remove the cache by rm -rf /var/lib/apt/lists/* at the end of each script to reduce the layer size.
(especially if you pre-build and register the image in the registry)

local git config is not copied into devcontainer

If i manually install git in Dockerfile then the Remote-Container plugin can automatically copy my local .gitconfig into the devcontainer.
However, when i switch to use git features, then my .gitconfig is not copied.

Consider splitting up the `common` feature

We could consider deprecating the common feature (similar to some of the ones mentioned in #64) and creating multiple features out of it.

The current common feature contains (text from @Chuxel):


1. Common OS Utilities, set a locale if one not there, systemctl shim

  • A โ€œcommon utilitiesโ€ feature w/o sudo. To recap, its goal is to install:
  • Common command line utilities used in shell scripts (e.g., ps, lsof, wget, curl + ca-certificates zip, unzip, tar, net-tools)
  • Utilities frequently referenced in Linux install instructions (apt-transport-https, lsb-release, jq, gnupg2 + dirmngr)
  • Man pages (man-db, manpages, manpages-dev, manpages-posix manpages-posix-dev)
  • Libraries frequently required by native code that is not statically compiled (libc6, libgcc1, libkrb5-3, libgssapi-krb5-2, libicu[0-9][0-9], liblttng-ust[0-9], libstdc++6, zlib1g)
  • Give people a hint for what to do w/o systemctl since systemd is rarely in container images, but pass through if itโ€™s there. Lots of Linux instructions reference it so it was added in time because of customer confusion.

Many of these are already in images like โ€œnodeโ€, but theyโ€™re checked for coverage since they can be missing from minimal images like โ€œdebianโ€. Adding a default locale is a good idea given the number of developer tools that can bomb without it, but we could give the option to pick a locale. Right now, itโ€™s always en_US.UTF-8. In theory we could pull out git in favor of the git feature but given how central it is to developer images and it only installs if not present, it might be worth keeping.


2. Default bash theme

  • Include in โ€œcommon utilitiesโ€ but change the default so the source code portion of it is off by default since this can be slow in massive repos. Also disabling source control is mandatory if git is removed from common utilities. Rename it to โ€œdevcontainers-defaultโ€ instead of โ€œcodespaces.โ€

3. apt-get upgrade option

  • New โ€œaptโ€ feature which includes upgrade and the option to install packages from a list.

4. Non-root user and w/sudo setup


5. Zsh + Oh My Zsh + Default Theme

  • New โ€œZSHโ€ feature that includes default theme but makes it an option. Rename the theme โ€œdevcontainers-default.โ€

6. Set git editor to โ€œcodeโ€ if in VS Code terminal window and editor not already set

  • Built-in feature of Remote โ€“ Containers and Codespaces. Its presence here is a hack.

7. โ€œcodeโ€ auto-maps to code-insiders if weโ€™re in a container created by code-insiders (since โ€œcodeโ€ wonโ€™t ever work)

  • Built-in feature of Remote โ€“ Containers and Codespaces. Its presence here is a hack.

8. devcontainer-info command


9. First run message

  • Built-in feature of Remote โ€“ Containers and Codespaces. Reuse same file location for back compat.

Its inclusion here was always a workaround. Tactically we could just make this a separate feature, but itโ€™s always been a bit of an ugly hack.


10. common-redhat.sh, common-alpine.sh

  • Merge these two scripts into the โ€œcommon utilitiesโ€ and โ€œzshโ€ features. We can detect whether apt, yum, or apk are there to figure out which scenario we are in. Most of the script is the same aside from how the packages are installed.

Java feature sets GRADLE_USER_HOME incorrently

When I install java via the feature it sets the GRADLE_USER_HOME env var to /.gradle instead of ${HOME}/.gradle as the code in

"GRADLE_USER_HOME": "${HOME}/.gradle",
tries to do.

When the devcontainer starts and ./gradlew is invoked the following exception is produced

./gradlew
Exception in thread "main" java.lang.RuntimeException: Could not create parent directory for lock file /.gradle/wrapper/dists/gradle-7.4.1-bin/58kw26xllvsiedyf3nujyarhn/gradle-7.4.1-bin.zip.lck
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:43)
        at org.gradle.wrapper.Install.createDist(Install.java:62)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:63)

This is because the vscode user in the container does not have permission to create /.gradle directory. If i run unset GRADLE_USER_HOME things work just fine because it will default to the .gradle in the home folder.

It seems that $HOME in

"GRADLE_USER_HOME": "${HOME}/.gradle",
is resolving to an empty string.

Python feature (os-provided) installation failed if python already installed

When I tried to install Python on the rust image, the build failed with an error because it could not create a symbolic link.

#0 48.02 ln: failed to create symbolic link '/usr/bin/python': File exists
#0 48.02 ERROR: Feature "Python" (ghcr.io/devcontainers/features/python) failed to install! Look at the documentation at https://github.com/devcontainers/features/tree/main/src/python for help troubleshooting this error.

My devcontainer.json is this.

{
  "name": "${localWorkspaceFolderBasename}",
  "image": "mcr.microsoft.com/devcontainers/rust:1",
  "runArgs": ["--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"],

  "customizations": {
    "vscode": {
      "settings": {
        "lldb.executable": "/usr/bin/lldb",
        "files.watcherExclude": {
          "**/target/**": true
        },
        "rust-analyzer.checkOnSave.command": "clippy"
      },
      "extensions": [
        "vadimcn.vscode-lldb",
        "mutantdino.resourcemonitor",
        "rust-lang.rust-analyzer",
        "tamasfe.even-better-toml",
        "serayuzgur.crates"
      ]
    }
  },
  "remoteUser": "vscode",
  "features": {
    "ghcr.io/devcontainers/features/python:1": {}
  }
}

Overwrite the symbolic link, or, I think it is better to stop with an error immediately after executing the script (instead of stopping after some time has passed)

Error installing os-provided python

@samruddhikhandale @joshspicer

find passes its results on to xargs in a way that breaks when the paths contain spaces:

find "${PYTHON_INSTALL_PATH}" -type d | xargs -n 1 chmod g+s

I see this fail using the following with 0.248.0:

{
    "image": "mcr.microsoft.com/vscode/devcontainers/base:0-bullseye",
    "features": {
       "node": "latest",
       "python": "os-provided"
    } 
}

https://unix.stackexchange.com/questions/172481/how-to-quote-arguments-with-xargs suggests using find with -print0 and xargs with -0 to use \0 as the delimiter. (This seems to work for our case too based on a quick try.)

Similarly:

find "${PIPX_HOME}" -type d | xargs -n 1 chmod g+s

[12 ms] Remote-Containers 0.248.0 in VS Code 1.71.0-insider (235a92a3693176fbf9af16ec5b829c458a1d682f).
[...]
#0 11.32 Skipping apt-get update.
#0 11.33 Reading package lists...
#0 11.60 Building dependency tree...
#0 11.66 Reading state information...
#0 11.73 python3 is already the newest version (3.9.2-3).
#0 11.73 python3 set to manually installed.
#0 11.73 The following additional packages will be installed:
#0 11.73   blt libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev
#0 11.73   libpython3.9 libpython3.9-dev python-pip-whl python3-distutils
#0 11.73   python3-lib2to3 python3-pkg-resources python3-setuptools python3-wheel
#0 11.73   python3.9-dev python3.9-doc python3.9-venv tk8.6-blt2.5
#0 11.74 Suggested packages:
#0 11.74   blt-demo python3-examples python-setuptools-doc tix python3-tk-dbg
#0 11.74 Recommended packages:
#0 11.74   javascript-common build-essential
#0 11.87 The following NEW packages will be installed:
#0 11.87   blt libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev
#0 11.87   libpython3.9 libpython3.9-dev python-pip-whl python3-dev python3-distutils
#0 11.87   python3-doc python3-lib2to3 python3-pip python3-pkg-resources
#0 11.87   python3-setuptools python3-tk python3-venv python3-wheel python3.9-dev
#0 11.87   python3.9-doc python3.9-venv tk8.6-blt2.5
#0 11.93 0 upgraded, 22 newly installed, 0 to remove and 9 not upgraded.
#0 11.93 Need to get 21.2 MB of archives.
#0 11.93 After this operation, 90.4 MB of additional disk space will be used.
#0 11.93 Get:1 http://deb.debian.org/debian bullseye/main arm64 tk8.6-blt2.5 arm64 2.5.3+dfsg-4.1 [540 kB]
#0 12.16 Get:2 http://deb.debian.org/debian bullseye/main arm64 blt arm64 2.5.3+dfsg-4.1 [14.9 kB]
#0 12.16 Get:3 http://deb.debian.org/debian bullseye/main arm64 libjs-jquery all 3.5.1+dfsg+~3.5.5-7 [315 kB]
#0 12.20 Get:4 http://deb.debian.org/debian bullseye/main arm64 libjs-underscore all 1.9.1~dfsg-3 [100 kB]
#0 12.22 Get:5 http://deb.debian.org/debian bullseye/main arm64 libjs-sphinxdoc all 3.4.3-2 [127 kB]
#0 12.23 Get:6 http://deb.debian.org/debian bullseye/main arm64 libpython3.9 arm64 3.9.2-1 [1556 kB]
#0 12.36 Get:7 http://deb.debian.org/debian bullseye/main arm64 libpython3.9-dev arm64 3.9.2-1 [3835 kB]
#0 12.60 Get:8 http://deb.debian.org/debian bullseye/main arm64 libpython3-dev arm64 3.9.2-3 [21.7 kB]
#0 12.61 Get:9 http://deb.debian.org/debian bullseye/main arm64 python-pip-whl all 20.3.4-4+deb11u1 [1948 kB]
#0 12.71 Get:10 http://deb.debian.org/debian bullseye/main arm64 python3.9-dev arm64 3.9.2-1 [515 kB]
#0 12.74 Get:11 http://deb.debian.org/debian bullseye/main arm64 python3-lib2to3 all 3.9.2-1 [77.8 kB]
#0 12.74 Get:12 http://deb.debian.org/debian bullseye/main arm64 python3-distutils all 3.9.2-1 [143 kB]
#0 12.75 Get:13 http://deb.debian.org/debian bullseye/main arm64 python3-dev arm64 3.9.2-3 [24.8 kB]
#0 12.75 Get:14 http://deb.debian.org/debian bullseye/main arm64 python3.9-doc all 3.9.2-1 [10.9 MB]
#0 13.33 Get:15 http://deb.debian.org/debian bullseye/main arm64 python3-doc all 3.9.2-3 [21.6 kB]
#0 13.33 Get:16 http://deb.debian.org/debian bullseye/main arm64 python3-pkg-resources all 52.0.0-4 [190 kB]
#0 13.34 Get:17 http://deb.debian.org/debian bullseye/main arm64 python3-setuptools all 52.0.0-4 [366 kB]
#0 13.36 Get:18 http://deb.debian.org/debian bullseye/main arm64 python3-wheel all 0.34.2-1 [24.0 kB]
#0 13.36 Get:19 http://deb.debian.org/debian bullseye/main arm64 python3-pip all 20.3.4-4+deb11u1 [337 kB]
#0 13.38 Get:20 http://deb.debian.org/debian bullseye/main arm64 python3-tk arm64 3.9.2-1 [100 kB]
#0 13.38 Get:21 http://deb.debian.org/debian bullseye/main arm64 python3.9-venv arm64 3.9.2-1 [5396 B]
#0 13.38 Get:22 http://deb.debian.org/debian bullseye/main arm64 python3-venv arm64 3.9.2-3 [1188 B]
#0 13.74 Fetched 21.2 MB in 2s (14.0 MB/s)
#0 13.76 Selecting previously unselected package tk8.6-blt2.5.
(Reading database ... 26073 files and directories currently installed.)
#0 13.77 Preparing to unpack .../00-tk8.6-blt2.5_2.5.3+dfsg-4.1_arm64.deb ...
#0 13.77 Unpacking tk8.6-blt2.5 (2.5.3+dfsg-4.1) ...
#0 13.82 Selecting previously unselected package blt.
#0 13.82 Preparing to unpack .../01-blt_2.5.3+dfsg-4.1_arm64.deb ...
#0 13.82 Unpacking blt (2.5.3+dfsg-4.1) ...
#0 13.84 Selecting previously unselected package libjs-jquery.
#0 13.84 Preparing to unpack .../02-libjs-jquery_3.5.1+dfsg+~3.5.5-7_all.deb ...
#0 13.84 Unpacking libjs-jquery (3.5.1+dfsg+~3.5.5-7) ...
#0 13.88 Selecting previously unselected package libjs-underscore.
#0 13.88 Preparing to unpack .../03-libjs-underscore_1.9.1~dfsg-3_all.deb ...
#0 13.88 Unpacking libjs-underscore (1.9.1~dfsg-3) ...
#0 13.90 Selecting previously unselected package libjs-sphinxdoc.
#0 13.90 Preparing to unpack .../04-libjs-sphinxdoc_3.4.3-2_all.deb ...
#0 13.90 Unpacking libjs-sphinxdoc (3.4.3-2) ...
#0 13.93 Selecting previously unselected package libpython3.9:arm64.
#0 13.93 Preparing to unpack .../05-libpython3.9_3.9.2-1_arm64.deb ...
#0 13.93 Unpacking libpython3.9:arm64 (3.9.2-1) ...
#0 14.04 Selecting previously unselected package libpython3.9-dev:arm64.
#0 14.04 Preparing to unpack .../06-libpython3.9-dev_3.9.2-1_arm64.deb ...
#0 14.04 Unpacking libpython3.9-dev:arm64 (3.9.2-1) ...
#0 14.29 Selecting previously unselected package libpython3-dev:arm64.
#0 14.30 Preparing to unpack .../07-libpython3-dev_3.9.2-3_arm64.deb ...
#0 14.30 Unpacking libpython3-dev:arm64 (3.9.2-3) ...
#0 14.31 Selecting previously unselected package python-pip-whl.
#0 14.32 Preparing to unpack .../08-python-pip-whl_20.3.4-4+deb11u1_all.deb ...
#0 14.32 Unpacking python-pip-whl (20.3.4-4+deb11u1) ...
#0 14.42 Selecting previously unselected package python3.9-dev.
#0 14.42 Preparing to unpack .../09-python3.9-dev_3.9.2-1_arm64.deb ...
#0 14.42 Unpacking python3.9-dev (3.9.2-1) ...
#0 14.44 Selecting previously unselected package python3-lib2to3.
#0 14.44 Preparing to unpack .../10-python3-lib2to3_3.9.2-1_all.deb ...
#0 14.45 Unpacking python3-lib2to3 (3.9.2-1) ...
#0 14.47 Selecting previously unselected package python3-distutils.
#0 14.47 Preparing to unpack .../11-python3-distutils_3.9.2-1_all.deb ...
#0 14.47 Unpacking python3-distutils (3.9.2-1) ...
#0 14.50 Selecting previously unselected package python3-dev.
#0 14.50 Preparing to unpack .../12-python3-dev_3.9.2-3_arm64.deb ...
#0 14.50 Unpacking python3-dev (3.9.2-3) ...
#0 14.52 Selecting previously unselected package python3.9-doc.
#0 14.52 Preparing to unpack .../13-python3.9-doc_3.9.2-1_all.deb ...
#0 14.52 Unpacking python3.9-doc (3.9.2-1) ...
#0 14.92 Selecting previously unselected package python3-doc.
#0 14.92 Preparing to unpack .../14-python3-doc_3.9.2-3_all.deb ...
#0 14.93 Unpacking python3-doc (3.9.2-3) ...
#0 14.95 Selecting previously unselected package python3-pkg-resources.
#0 14.95 Preparing to unpack .../15-python3-pkg-resources_52.0.0-4_all.deb ...
#0 14.95 Unpacking python3-pkg-resources (52.0.0-4) ...
#0 14.98 Selecting previously unselected package python3-setuptools.
#0 14.98 Preparing to unpack .../16-python3-setuptools_52.0.0-4_all.deb ...
#0 14.99 Unpacking python3-setuptools (52.0.0-4) ...
#0 15.02 Selecting previously unselected package python3-wheel.
#0 15.03 Preparing to unpack .../17-python3-wheel_0.34.2-1_all.deb ...
#0 15.03 Unpacking python3-wheel (0.34.2-1) ...
#0 15.05 Selecting previously unselected package python3-pip.
#0 15.05 Preparing to unpack .../18-python3-pip_20.3.4-4+deb11u1_all.deb ...
#0 15.05 Unpacking python3-pip (20.3.4-4+deb11u1) ...
#0 15.09 Selecting previously unselected package python3-tk:arm64.
#0 15.09 Preparing to unpack .../19-python3-tk_3.9.2-1_arm64.deb ...
#0 15.09 Unpacking python3-tk:arm64 (3.9.2-1) ...
#0 15.12 Selecting previously unselected package python3.9-venv.
#0 15.12 Preparing to unpack .../20-python3.9-venv_3.9.2-1_arm64.deb ...
#0 15.12 Unpacking python3.9-venv (3.9.2-1) ...
#0 15.14 Selecting previously unselected package python3-venv.
#0 15.14 Preparing to unpack .../21-python3-venv_3.9.2-3_arm64.deb ...
#0 15.14 Unpacking python3-venv (3.9.2-3) ...
#0 15.16 Setting up python3-pkg-resources (52.0.0-4) ...
#0 15.27 Setting up tk8.6-blt2.5 (2.5.3+dfsg-4.1) ...
#0 15.27 Setting up blt (2.5.3+dfsg-4.1) ...
#0 15.28 Setting up python3-tk:arm64 (3.9.2-1) ...
#0 15.33 Setting up python3-wheel (0.34.2-1) ...
#0 15.41 Setting up libpython3.9:arm64 (3.9.2-1) ...
#0 15.42 Setting up python-pip-whl (20.3.4-4+deb11u1) ...
#0 15.42 Setting up libjs-jquery (3.5.1+dfsg+~3.5.5-7) ...
#0 15.43 Setting up python3-lib2to3 (3.9.2-1) ...
#0 15.48 Setting up libjs-underscore (1.9.1~dfsg-3) ...
#0 15.49 Setting up python3-distutils (3.9.2-1) ...
#0 15.55 Setting up python3-setuptools (52.0.0-4) ...
#0 15.72 Setting up libpython3.9-dev:arm64 (3.9.2-1) ...
#0 15.73 Setting up python3.9-doc (3.9.2-1) ...
#0 15.73 Setting up python3-pip (20.3.4-4+deb11u1) ...
#0 15.87 Setting up libjs-sphinxdoc (3.4.3-2) ...
#0 15.87 Setting up python3.9-dev (3.9.2-1) ...
#0 15.87 Setting up python3.9-venv (3.9.2-1) ...
#0 15.90 Setting up python3-doc (3.9.2-3) ...
#0 15.91 Setting up libpython3-dev:arm64 (3.9.2-3) ...
#0 15.91 Setting up python3-venv (3.9.2-3) ...
#0 15.91 Setting up python3-dev (3.9.2-3) ...
#0 15.92 Processing triggers for man-db (2.9.4-2) ...
#0 15.99 Processing triggers for libc-bin (2.31-13+deb11u3) ...
#0 16.02 Updating /etc/bash.bashrc and /etc/zsh/zshrc...
#0 28.54 chmod: cannot access '/usr/local/share/nvm/test/slow/nvm': No such file or directory
#0 28.54 chmod: cannot access 'use': No such file or directory
#0 28.54 chmod: cannot access '/usr/local/share/nvm/test/slow/nvm': No such file or directory
#0 28.54 chmod: cannot access 'exec': No such file or directory
#0 28.54 chmod: cannot access '/usr/local/share/nvm/test/slow/nvm': No such file or directory
#0 28.54 chmod: cannot access 'run': No such file or directory
#0 28.55 chmod: cannot access '/usr/local/share/nvm/test/slow/nvm': No such file or directory
#0 28.55 chmod: cannot access 'uninstall': No such file or directory
#0 28.55 chmod: cannot access '/usr/local/share/nvm/test/slow/nvm': No such file or directory
#0 28.55 chmod: cannot access 'reinstall-packages': No such file or directory
#0 28.55 chmod: cannot access '/usr/local/share/nvm/test/slow/nvm': No such file or directory
#0 28.55 chmod: cannot access 'reinstall-packages/test-npmlink': No such file or directory
#0 28.55 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.55 chmod: cannot access 'tests': No such file or directory
#0 28.55 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.56 chmod: cannot access 'tests/mocks': No such file or directory
#0 28.56 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.56 chmod: cannot access 'tests/mocks/project_dirs': No such file or directory
#0 28.56 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.56 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested': No such file or directory
#0 28.56 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.56 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested/node_modules': No such file or directory
#0 28.56 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.56 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested/node_modules/foo': No such file or directory
#0 28.56 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.56 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested/node_modules/foo/bar': No such file or directory
#0 28.56 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.57 chmod: cannot access 'tests/mocks/project_dirs/no-nesting-both': No such file or directory
#0 28.57 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.57 chmod: cannot access 'tests/mocks/project_dirs/no-nesting-both/node_modules': No such file or directory
#0 28.57 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.57 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested-pkg': No such file or directory
#0 28.57 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.57 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested-pkg/node_modules': No such file or directory
#0 28.57 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.57 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested-pkg/node_modules/foo': No such file or directory
#0 28.57 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.57 chmod: cannot access 'tests/mocks/project_dirs/inside-n_m-nested-pkg/node_modules/foo/bar': No such file or directory
#0 28.58 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.58 chmod: cannot access 'tests/mocks/project_dirs/nested-both': No such file or directory
#0 28.58 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.58 chmod: cannot access 'tests/mocks/project_dirs/nested-both/a': No such file or directory
#0 28.58 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.58 chmod: cannot access 'tests/mocks/project_dirs/nested-both/a/b': No such file or directory
#0 28.58 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.58 chmod: cannot access 'tests/mocks/project_dirs/nested-both/a/b/c': No such file or directory
#0 28.58 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.58 chmod: cannot access 'tests/mocks/project_dirs/nested-both/a/b/c/d': No such file or directory
#0 28.58 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.58 chmod: cannot access 'tests/mocks/project_dirs/nested-both/node_modules': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/no-nesting-n_m': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/no-nesting-n_m/node_modules': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/no-nesting-pkg': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/nested-pkg': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/nested-pkg/a': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/nested-pkg/a/b': No such file or directory
#0 28.59 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.59 chmod: cannot access 'tests/mocks/project_dirs/nested-pkg/a/b/c': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.60 chmod: cannot access 'tests/mocks/project_dirs/nested-pkg/a/b/c/d': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.60 chmod: cannot access 'tests/mocks/project_dirs/nested-n_m': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.60 chmod: cannot access 'tests/mocks/project_dirs/nested-n_m/a': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.60 chmod: cannot access 'tests/mocks/project_dirs/nested-n_m/a/b': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.60 chmod: cannot access 'tests/mocks/project_dirs/nested-n_m/a/b/c': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.60 chmod: cannot access 'tests/mocks/project_dirs/nested-n_m/a/b/c/d': No such file or directory
#0 28.60 chmod: cannot access '/usr/local/share/nvm/test/fast/Unit': No such file or directory
#0 28.61 chmod: cannot access 'tests/mocks/project_dirs/nested-n_m/node_modules': No such file or directory
#0 28.61 chmod: cannot access '/usr/local/share/nvm/test/fast/Listing': No such file or directory
#0 28.61 chmod: cannot access 'versions': No such file or directory
#0 28.61 chmod: cannot access '/usr/local/share/nvm/test/fast/Listing': No such file or directory
#0 28.61 chmod: cannot access 'paths': No such file or directory
#0 28.61 chmod: cannot access '/usr/local/share/nvm/test/fast/Set': No such file or directory
#0 28.61 chmod: cannot access 'Colors': No such file or directory
------
error: failed to solve: executor failed running [/bin/sh -c cd /tmp/build-features/python_2 && export $(cat devcontainer-features.env | xargs) && chmod +x ./install.sh && ./install.sh]: exit code: 123
[34638 ms] Stop (31462 ms): Run: docker buildx build --load --build-context dev_containers_feature_content_source=/var/folders/hj/vvzp2ffx69gbfmkhf5tckppm0000gn/T/vsch/container-features/0.248.0-1661172724974 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/vscode/devcontainers/base:0-bullseye --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -t vsc-smktst-76fd0a5486a4cde5083a94a3f6598b36-features -f /var/folders/hj/vvzp2ffx69gbfmkhf5tckppm0000gn/T/vsch/container-features/0.248.0-1661172724974/Dockerfile.extended /var/folders/hj/vvzp2ffx69gbfmkhf5tckppm0000gn/T/__dev-containers-build-empty
[34638 ms] Error: Command failed: docker buildx build --load --build-context dev_containers_feature_content_source=/var/folders/hj/vvzp2ffx69gbfmkhf5tckppm0000gn/T/vsch/container-features/0.248.0-1661172724974 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/vscode/devcontainers/base:0-bullseye --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -t vsc-smktst-76fd0a5486a4cde5083a94a3f6598b36-features -f /var/folders/hj/vvzp2ffx69gbfmkhf5tckppm0000gn/T/vsch/container-features/0.248.0-1661172724974/Dockerfile.extended /var/folders/hj/vvzp2ffx69gbfmkhf5tckppm0000gn/T/__dev-containers-build-empty
[34638 ms]     at pA (/Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js:255:2186)
[34639 ms]     at vv (/Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js:255:2124)
[34639 ms]     at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
[34639 ms]     at async SA (/Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js:261:2006)
[34639 ms]     at async Ms (/Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js:261:3110)
[34639 ms]     at async bk (/Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js:366:9409)
[34639 ms]     at async vk (/Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js:366:9165)
[34640 ms] Stop (34356 ms): Run: /Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper.app/Contents/MacOS/Code - Insiders Helper /Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /Users/chrmarti/Library/Application Support/Code - Insiders/User/globalStorage/ms-vscode-remote.remote-containers/data --workspace-folder /Users/chrmarti/Development/repos/smktst --workspace-mount-consistency cached --id-label devcontainer.local_folder=/Users/chrmarti/Development/repos/smktst --log-level trace --log-format json --config /Users/chrmarti/Development/repos/smktst/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[34640 ms] Exit code 1
[34641 ms] Command failed: /Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper.app/Contents/MacOS/Code - Insiders Helper /Users/chrmarti/.vscode-insiders/extensions/ms-vscode-remote.remote-containers-0.248.0/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /Users/chrmarti/Library/Application Support/Code - Insiders/User/globalStorage/ms-vscode-remote.remote-containers/data --workspace-folder /Users/chrmarti/Development/repos/smktst --workspace-mount-consistency cached --id-label devcontainer.local_folder=/Users/chrmarti/Development/repos/smktst --log-level trace --log-format json --config /Users/chrmarti/Development/repos/smktst/.devcontainer/devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root true
[34641 ms] Exit code 1

extend python feature with "system, but at least 3.x"

Background

Currently we can specify a very specific version or the system version.
Since the feature is supposed to run on a bunch of different base images, specifying system is not helpful except in tightly controlled environments.
Specifying a specific version like 3.8 could be overkill, in case the system already provides e.g. 3.8.1 precompiled.

Feature Request

It would be nice to say "use the system version, but no lower then 3.x".
Maybe the python typical notation can be reused: >=3.x to indicate this.

`docker-from-docker`: allow installation alongside `docker-in-docker`, as non-default docker configuration

#171 prevents me from using docker-from-docker as the primary docker configuration for my devcontainer (since I need to share docker ports with internal processes). I realized, however, that there was nothing preventing me from mounting both sockets and switching off between them. This allowed me to get what I really wanted out of docker-from-docker, which was the ability to update the devcontainer image on the host machine. This is useful for two reasons, both pertaining specifically to locally-running devcontainers:

  1. I can use the devcontainer CLI to iterate on builds without shutting down the active dev container -- so if I'm making changes, I don't need to lose access to my project while I wait to see the there are any errors.
  2. I can implement a "check for updates" process, where I use the host's docker daemon to check for the newest built version of the devcontainer image, download it, and then encourage the user to Rebuild Container at their earliest convenience if and only if the image has actually changed since the one they're currently using. My image is privately hosted and I can't access my private registry from the bootstrap container (because doing so would require access to the host's credential helpers), so this is the only way to ensure that users start a Rebuild with an up-to-date cache.

I'm accomplishing this right now by vendoring some pieces of the docker-from-docker feature into a custom feature, but it seems like it would make more sense as a toggle for the existing feature: let me use my devcontainer configuration to set the target socket to e.g. /var/run/docker-host-proxy.sock instead of /var/run/docker.sock. Then I can use DOCKER_HOST=/var/run/docker-host-proxy.sock from scripts inside my devcontainer to interact specifically with the host's Docker daemon.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.