From 03178bbe04e0d051dda0458b920ebf656b27b0cf Mon Sep 17 00:00:00 2001 From: mihab Date: Thu, 1 Mar 2018 21:38:39 +0100 Subject: [PATCH] Fixes #9085: Cannot `up` a machine with Docker Toolbox and Git Bash --- plugins/providers/docker/driver.rb | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/providers/docker/driver.rb b/plugins/providers/docker/driver.rb index fc53926fd..cf3149429 100644 --- a/plugins/providers/docker/driver.rb +++ b/plugins/providers/docker/driver.rb @@ -49,14 +49,23 @@ module VagrantPlugins run_cmd += volumes.map { |v| v = v.to_s if v.include?(":") && @executor.windows? - host, guest = v.split(":", 2) - host = Vagrant::Util::Platform.windows_path(host) - # NOTE: Docker does not support UNC style paths (which also - # means that there's no long path support). Hopefully this - # will be fixed someday and the gsub below can be removed. - host.gsub!(/^[^A-Za-z]+/, "") - v = [host, guest].join(":") + if v.index(":") != v.rindex(":") + # If we have 2 colons, the host path is an absolute Windows URL + # and we need to remove the colon from it + host, colon, guest = v.rpartition(":") + host = "//" + host[0].downcase + host[2..-1] + v = [host, guest].join(":") + else + host, guest = v.split(":", 2) + host = Vagrant::Util::Platform.windows_path(host) + # NOTE: Docker does not support UNC style paths (which also + # means that there's no long path support). Hopefully this + # will be fixed someday and the gsub below can be removed. + host.gsub!(/^[^A-Za-z]+/, "") + v = [host, guest].join(":") + end end + ['-v', v.to_s] } run_cmd += %W(--privileged) if params[:privileged]