From 64517e31fce5293f58295c567bd5487e07b069f4 Mon Sep 17 00:00:00 2001
From: Joffrey F <joffrey@docker.com>
Date: Thu, 15 Sep 2016 17:59:20 -0700
Subject: [PATCH] Force default host on windows to the default TCP host
 (instead of npipe)

Signed-off-by: Joffrey F <joffrey@docker.com>
---
 compose/cli/docker_client.py         | 6 ++++++
 tests/unit/cli/docker_client_test.py | 8 ++++++++
 2 files changed, 14 insertions(+)

diff --git a/compose/cli/docker_client.py b/compose/cli/docker_client.py
index b196d3036..7950c2423 100644
--- a/compose/cli/docker_client.py
+++ b/compose/cli/docker_client.py
@@ -9,6 +9,7 @@ from docker.tls import TLSConfig
 from docker.utils import kwargs_from_env
 
 from ..const import HTTP_TIMEOUT
+from ..const import IS_WINDOWS_PLATFORM
 from .errors import UserError
 from .utils import generate_user_agent
 from .utils import unquote_path
@@ -71,4 +72,9 @@ def docker_client(environment, version=None, tls_config=None, host=None,
 
     kwargs['user_agent'] = generate_user_agent()
 
+    if 'base_url' not in kwargs and IS_WINDOWS_PLATFORM:
+        # docker-py 1.10 defaults to using npipes, but we don't want that
+        # change in compose yet - use the default TCP connection instead.
+        kwargs['base_url'] = 'tcp://127.0.0.1:2375'
+
     return Client(**kwargs)
diff --git a/tests/unit/cli/docker_client_test.py b/tests/unit/cli/docker_client_test.py
index aaa935afa..6cdb7da57 100644
--- a/tests/unit/cli/docker_client_test.py
+++ b/tests/unit/cli/docker_client_test.py
@@ -60,6 +60,14 @@ class DockerClientTestCase(unittest.TestCase):
         )
         self.assertEqual(client.headers['User-Agent'], expected)
 
+    @mock.patch.dict(os.environ)
+    def test_docker_client_default_windows_host(self):
+        with mock.patch('compose.cli.docker_client.IS_WINDOWS_PLATFORM', True):
+            if 'DOCKER_HOST' in os.environ:
+                del os.environ['DOCKER_HOST']
+            client = docker_client(os.environ)
+            assert client.base_url == 'http://127.0.0.1:2375'
+
 
 class TLSConfigTestCase(unittest.TestCase):
     ca_cert = 'tests/fixtures/tls/ca.pem'