Spaces:
Runtime error
Runtime error
from typing import Optional, Any | |
from phi.utils.log import logger | |
class DockerApiClient: | |
def __init__(self, base_url: Optional[str] = None, timeout: int = 30): | |
super().__init__() | |
self.base_url: Optional[str] = base_url | |
self.timeout: int = timeout | |
# DockerClient | |
self._api_client: Optional[Any] = None | |
logger.debug("**-+-** DockerApiClient created") | |
def create_api_client(self) -> Optional[Any]: | |
"""Create a docker.DockerClient""" | |
import docker | |
logger.debug("Creating docker.DockerClient") | |
try: | |
if self.base_url is None: | |
self._api_client = docker.from_env(timeout=self.timeout) | |
else: | |
self._api_client = docker.DockerClient(base_url=self.base_url, timeout=self.timeout) | |
except Exception as e: | |
logger.error("Could not connect to docker. Please confirm docker is installed and running") | |
logger.error(e) | |
logger.info("Fix:") | |
logger.info("- If docker is running, please check output of `ls -l /var/run/docker.sock`.") | |
logger.info( | |
'- If file does not exist, please run: `sudo ln -s "$HOME/.docker/run/docker.sock" /var/run/docker.sock`' | |
) | |
logger.info("- More info: https://docs.phidata.com/faq/could-not-connect-to-docker") | |
exit(0) | |
return self._api_client | |
def api_client(self) -> Optional[Any]: | |
if self._api_client is None: | |
self._api_client = self.create_api_client() | |
return self._api_client | |