From c12a205ab8e195541acfe0cb654b4888e16ea05c Mon Sep 17 00:00:00 2001 From: Josh Spicer Date: Fri, 3 Jun 2022 10:46:25 -0400 Subject: Pass options via environment variables (#39) * up to docker-in-docker converted * first pass at the rest of the features (and bash linting and updated CLI * move shell linter to own file * rename feature.json -> devcontainer-feature.json * continue on error * continue on error in right spot * formatting * fix AZ_VERSION * update python * restore variable name * update linter actions, fix dind/dfd/desktop scripts, add test-scenaerios * add tree because I like tree * glob for shell linter * fix test-scenarios * shell linter * more shell helper --- src/docker-in-docker/devcontainer-feature.json | 49 ++++++++++++++++++++++++++ src/docker-in-docker/feature.json | 42 ---------------------- src/docker-in-docker/install.sh | 17 ++++----- 3 files changed, 58 insertions(+), 50 deletions(-) create mode 100644 src/docker-in-docker/devcontainer-feature.json delete mode 100644 src/docker-in-docker/feature.json (limited to 'src/docker-in-docker') diff --git a/src/docker-in-docker/devcontainer-feature.json b/src/docker-in-docker/devcontainer-feature.json new file mode 100644 index 0000000..096756d --- /dev/null +++ b/src/docker-in-docker/devcontainer-feature.json @@ -0,0 +1,49 @@ +{ + "id": "docker-in-docker", + "name": "Docker (Moby) support (Docker-in-Docker)", + "options": { + "version": { + "type": "string", + "proposals": [ + "latest", + "none", + "20.10" + ], + "default": "latest", + "description": "Select or enter a Docker/Moby Engine version. (Availability can vary by OS version.)" + }, + "moby": { + "type": "boolean", + "default": true, + "description": "Install OSS Moby build instead of Docker CE" + }, + "docker_dash_compose_version": { + "type": "string", + "enum": [ + "v1", + "v2" + ], + "default": "v1", + "description": "Default version of Docker Compose (v1 or v2)" + } + }, + "entrypoint": "/usr/local/share/docker-init.sh", + "privileged": true, + "containerEnv": { + "DOCKER_BUILDKIT": "1" + }, + "extensions": [ + "ms-azuretools.vscode-docker" + ], + "mounts": [ + { + "source": "dind-var-lib-docker", + "target": "/var/lib/docker", + "type": "volume" + } + ], + "install": { + "app": "", + "file": "install.sh" + } +} \ No newline at end of file diff --git a/src/docker-in-docker/feature.json b/src/docker-in-docker/feature.json deleted file mode 100644 index 0aa95e9..0000000 --- a/src/docker-in-docker/feature.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "id": "docker-in-docker", - "name": "Docker (Moby) support (Docker-in-Docker)", - "options": { - "version": { - "type": "string", - "proposals": ["latest", "none", "20.10" ], - "default": "latest", - "description": "Select or enter a Docker/Moby Engine version. (Availability can vary by OS version.)" - }, - "moby": { - "type": "boolean", - "default": true, - "description": "Install OSS Moby build instead of Docker CE" - }, - "dockerDashComposeVersion": { - "type": "string", - "enum": ["v1", "v2" ], - "default": "v1", - "description": "Default version of Docker Compose (v1 or v2)" - } - }, - "entrypoint": "/usr/local/share/docker-init.sh", - "privileged": true, - "containerEnv": { - "DOCKER_BUILDKIT": "1" - }, - "extensions": [ - "ms-azuretools.vscode-docker" - ], - "mounts": [ - { - "source":"dind-var-lib-docker", - "target":"/var/lib/docker", - "type":"volume" - } - ], - "install": { - "app": "", - "file": "install.sh" - } -} \ No newline at end of file diff --git a/src/docker-in-docker/install.sh b/src/docker-in-docker/install.sh index a525203..02dd260 100644 --- a/src/docker-in-docker/install.sh +++ b/src/docker-in-docker/install.sh @@ -6,14 +6,15 @@ # # Docs: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/docs/docker-in-docker.md # Maintainer: The VS Code and Codespaces Teams -# -# Syntax: ./docker-in-docker-debian.sh [enable non-root docker access flag] [non-root user] [use moby] [Engine/CLI Version] [Major version for docker-compose] -ENABLE_NONROOT_DOCKER=${1:-"true"} -USERNAME=${2:-"automatic"} -USE_MOBY=${3:-"true"} -DOCKER_VERSION=${4:-"latest"} # The Docker/Moby Engine + CLI should match in version -DOCKER_DASH_COMPOSE_VERSION=${5:-"v1"} # v1 or v2 + +DOCKER_VERSION=${VERSION:-"latest"} # The Docker/Moby Engine + CLI should match in version +USE_MOBY=${MOBY:-"true"} +DOCKER_DASH_COMPOSE_VERSION=${DOCKER_DASH_COMPOSE_VERSION:-"v1"} # v1 or v2 + +ENABLE_NONROOT_DOCKER=${ENABLE_NONROOT_DOCKER:-"true"} +USERNAME=${USERNAME:-"automatic"} + MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc" DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy" DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy" @@ -40,7 +41,7 @@ fi if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then USERNAME="" POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") - for CURRENT_USER in ${POSSIBLE_USERS[@]}; do + for CURRENT_USER in "${POSSIBLE_USERS[@]}"; do if id -u ${CURRENT_USER} > /dev/null 2>&1; then USERNAME=${CURRENT_USER} break -- cgit v1.2.3