AmmarFahmy
adding all files
105b369
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
@property
def api_client(self) -> Optional[Any]:
if self._api_client is None:
self._api_client = self.create_api_client()
return self._api_client