From a48c9d654ae04830f724a423d776e6c972aa0168 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Wed, 8 Jan 2025 14:00:01 -0800 Subject: [PATCH] use per user docker socket if system docker socket doesn't exist --- arch/tools/cli/core.py | 3 ++- arch/tools/cli/utils.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/arch/tools/cli/core.py b/arch/tools/cli/core.py index 65cf2837..a9388b92 100644 --- a/arch/tools/cli/core.py +++ b/arch/tools/cli/core.py @@ -4,7 +4,7 @@ import time import sys import glob import docker -from cli.utils import getLogger +from cli.utils import getLogger, update_docker_host_env from cli.consts import ( ARCHGW_DOCKER_IMAGE, ARCHGW_DOCKER_NAME, @@ -110,6 +110,7 @@ def start_arch(arch_config_file, env, log_timeout=120, foreground=False): log.info("Starting arch gateway") try: + update_docker_host_env() client = docker.from_env() try: diff --git a/arch/tools/cli/utils.py b/arch/tools/cli/utils.py index 71ee7f70..60ffa0c4 100644 --- a/arch/tools/cli/utils.py +++ b/arch/tools/cli/utils.py @@ -1,3 +1,4 @@ +import os import yaml import logging import docker @@ -19,8 +20,26 @@ def getLogger(name="cli"): log = getLogger(__name__) +def update_docker_host_env(): + """ + Update DOCKER_HOST environment variable to use the local Docker socket + """ + if os.getenv("DOCKER_HOST"): + return + + default_docker_socket = os.getenv("DEFAULT_DOCKER_SOCKET", "/var/run/docker.sock") + if not os.path.exists(default_docker_socket): + home_dir = os.getenv("HOME") + docker_host = f"unix://{home_dir}/.docker/run/docker.sock" + log.info( + f"Default docker socket {default_docker_socket} not found, using {docker_host}" + ) + os.environ["DOCKER_HOST"] = docker_host + + def validate_schema(arch_config_file: str) -> None: try: + update_docker_host_env() client = docker.from_env() # Run the container with detach=True to avoid blocking main process container = client.containers.run(