diff --git a/arch/tools/cli/core.py b/arch/tools/cli/core.py index a9388b92..c91120df 100644 --- a/arch/tools/cli/core.py +++ b/arch/tools/cli/core.py @@ -4,6 +4,7 @@ import time import sys import glob import docker +from docker.errors import DockerException from cli.utils import getLogger, update_docker_host_env from cli.consts import ( ARCHGW_DOCKER_IMAGE, @@ -110,8 +111,12 @@ 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: + client = docker.from_env() + except DockerException as e: + # try setting up the docker host environment variable and retry + update_docker_host_env() + client = docker.from_env() try: container = client.containers.get("archgw") diff --git a/arch/tools/cli/utils.py b/arch/tools/cli/utils.py index 60ffa0c4..8e8b234d 100644 --- a/arch/tools/cli/utils.py +++ b/arch/tools/cli/utils.py @@ -2,6 +2,7 @@ import os import yaml import logging import docker +from docker.errors import DockerException from cli.consts import ARCHGW_DOCKER_IMAGE, ARCHGW_DOCKER_NAME @@ -39,9 +40,13 @@ def update_docker_host_env(): 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 + try: + client = docker.from_env() + except DockerException as e: + # try setting up the docker host environment variable and retry + update_docker_host_env() + client = docker.from_env() + container = client.containers.run( image=ARCHGW_DOCKER_IMAGE, volumes={