Browse Source

Allow running Docker container on MacOS (without in-container USB support) (#24412)

Haim Gelfenbeyn 1 year ago
parent
commit
7b83bb9d26
2 changed files with 18 additions and 9 deletions
  1. 7 0
      docs/getting_started_docker.md
  2. 11 9
      util/docker_cmd.sh

+ 7 - 0
docs/getting_started_docker.md

@@ -50,6 +50,13 @@ By default docker or podman are automatically detected and docker is preferred o
 RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
 RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
 ```
 ```
 
 
+If flashing is not required, it's possible to run the container as unprivileged (on Linux), and without docker-machine (on Windows/macOS):
+
+```
+SKIP_FLASHING_SUPPORT=1 util/docker_build.sh keyboard:keymap:target
+```
+
+
 ## FAQ
 ## FAQ
 
 
 ### Why can't I flash on Windows/macOS
 ### Why can't I flash on Windows/macOS

+ 11 - 9
util/docker_cmd.sh

@@ -34,15 +34,17 @@ if [ -z "$RUNTIME" ]; then
 	fi
 	fi
 fi
 fi
 
 
-
-# IF we are using docker on non Linux and docker-machine isn't working print an error
-# ELSE set usb_args
-if [ ! "$(uname)" = "Linux" ] && [ "$RUNTIME" = "docker" ] && ! docker-machine active >/dev/null 2>&1; then
-	errcho "Error: target requires docker-machine to work on your platform"
-	errcho "See http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos"
-	exit 3
-else
-	usb_args="--privileged -v /dev:/dev"
+# If SKIP_FLASHING_SUPPORT is defined, do not check for docker-machine and do not run a privileged container
+if [ -z "$SKIP_FLASHING_SUPPORT" ]; then
+  # IF we are using docker on non Linux and docker-machine isn't working print an error
+  # ELSE set usb_args
+  if [ ! "$(uname)" = "Linux" ] && [ "$RUNTIME" = "docker" ] && ! docker-machine active >/dev/null 2>&1; then
+    errcho "Error: target requires docker-machine to work on your platform"
+    errcho "See http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos"
+    exit 3
+  else
+    usb_args="--privileged -v /dev:/dev"
+  fi
 fi
 fi
 
 
 qmk_firmware_dir=$(pwd -W 2>/dev/null) || qmk_firmware_dir=$PWD  # Use Windows path if on Windows
 qmk_firmware_dir=$(pwd -W 2>/dev/null) || qmk_firmware_dir=$PWD  # Use Windows path if on Windows