Skip to content

Commit d2c621e

Browse files
committed
Refactor Docker client initialization to use platform-specific handling
1 parent ca90fdd commit d2c621e

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/magentic_ui/_docker.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import docker
22
import os
3+
import platform
34
import sys
45
from docker.errors import DockerException, ImageNotFound
56
import logging
@@ -12,9 +13,15 @@
1213
PYTHON_BUILD_CONTEXT = "magentic-ui-python-env"
1314

1415

16+
def get_docker_client() -> docker.DockerClient:
17+
if platform.system() == "Windows":
18+
return docker.DockerClient(base_url='npipe:////./pipe/dockerDesktopLinuxEngine')
19+
return docker.from_env()
20+
21+
1522
def check_docker_running() -> bool:
1623
try:
17-
client = docker.from_env()
24+
client = get_docker_client()
1825
client.ping() # type: ignore
1926
return True
2027
except (DockerException, ConnectionError):
@@ -49,8 +56,8 @@ def check_docker_image(image_name: str, client: docker.DockerClient) -> bool:
4956

5057
def build_browser_image(client: docker.DockerClient | None = None) -> None:
5158
if client is None:
52-
client = docker.from_env()
53-
client = docker.from_env()
59+
client = get_docker_client()
60+
client = get_docker_client()
5461
build_image(
5562
VNC_BROWSER_IMAGE + ":latest",
5663
os.path.join(_PACKAGE_DIR, "docker", VNC_BROWSER_BUILD_CONTEXT),
@@ -60,8 +67,8 @@ def build_browser_image(client: docker.DockerClient | None = None) -> None:
6067

6168
def build_python_image(client: docker.DockerClient | None = None) -> None:
6269
if client is None:
63-
client = docker.from_env()
64-
client = docker.from_env()
70+
client = get_docker_client()
71+
client = get_docker_client()
6572
build_image(
6673
PYTHON_IMAGE + ":latest",
6774
os.path.join(_PACKAGE_DIR, "docker", PYTHON_BUILD_CONTEXT),
@@ -85,15 +92,15 @@ def check_browser_image(client: docker.DockerClient | None = None) -> bool:
8592
if not check_docker_access():
8693
return False
8794
if client is None:
88-
client = docker.from_env()
89-
client = docker.from_env()
95+
client = get_docker_client()
96+
client = get_docker_client()
9097
return check_docker_image(VNC_BROWSER_IMAGE, client)
9198

9299

93100
def check_python_image(client: docker.DockerClient | None = None) -> bool:
94101
if not check_docker_access():
95102
return False
96103
if client is None:
97-
client = docker.from_env()
98-
client = docker.from_env()
104+
client = get_docker_client()
105+
client = get_docker_client()
99106
return check_docker_image(PYTHON_IMAGE, client)

0 commit comments

Comments
 (0)