From 79bd774e098569184aeb1d1cc05612a77ff28198 Mon Sep 17 00:00:00 2001 From: Junya Fukuda Date: Mon, 20 May 2024 17:01:28 -0400 Subject: [PATCH 1/4] Add support for Docker context endpoints --- aiodocker/docker.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/aiodocker/docker.py b/aiodocker/docker.py index a07499ad..46d2fff2 100644 --- a/aiodocker/docker.py +++ b/aiodocker/docker.py @@ -76,6 +76,8 @@ def __init__( docker_host = url # rename if docker_host is None: docker_host = os.environ.get("DOCKER_HOST", None) + if docker_host is None: + docker_host = self._get_docker_context_host() if docker_host is None: for sockpath in _sock_search_paths: if sockpath.is_socket(): @@ -380,3 +382,22 @@ def _docker_machine_ssl_context() -> ssl.SSLContext: certfile=str(certs_path2 / "cert.pem"), keyfile=str(certs_path2 / "key.pem") ) return context + + @staticmethod + def _get_docker_context_host() -> Optional[str]: + current_context_name = os.environ.get("DOCKER_CONTEXT", None) + if current_context_name is None: + try: + docker_config_path = Path.home() / ".docker" / "config.json" + docker_config = json.loads(docker_config_path.read_bytes()) + except IOError: + return None + current_context_name = docker_config.get("currentContext", "default") + + for meta_path in (Path.home() / ".docker" / "contexts" / "meta").glob( + "*/meta.json" + ): + context_data = json.loads(meta_path.read_bytes()) + if context_data["Name"] == current_context_name: + return context_data["Endpoints"]["docker"]["Host"] + return None From 4270b2e3d82e2d44d1ee635d3c1fdb470c95dcc7 Mon Sep 17 00:00:00 2001 From: Junya Fukuda Date: Mon, 20 May 2024 17:08:08 -0400 Subject: [PATCH 2/4] add: CONTRIBUTORS --- CONTRIBUTORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 46f193f1..4bec19ec 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -16,6 +16,7 @@ Joongi Kim Joshua Chung Julien Kmec Julien Simbola +Junya Fukuda Konstantin Valetov Martin Koppehel Nikolay Novik From 261bbf57ca560db02d14b99039d09eea1896b4ce Mon Sep 17 00:00:00 2001 From: Junya Fukuda Date: Mon, 20 May 2024 17:15:22 -0400 Subject: [PATCH 3/4] add a new news fragment --- CHANGES/811.feature | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CHANGES/811.feature diff --git a/CHANGES/811.feature b/CHANGES/811.feature new file mode 100644 index 00000000..57dde062 --- /dev/null +++ b/CHANGES/811.feature @@ -0,0 +1,3 @@ +Add support for Docker context endpoints. +Read files such as ~/.docker/context/meta.json and set the socket. +DOCKER_CONTEXT will be prioritized if it is set. \ No newline at end of file From 5b7882f706c95569ddac32ca1ce93202b37cc334 Mon Sep 17 00:00:00 2001 From: Junya Fukuda Date: Mon, 20 May 2024 17:23:23 -0400 Subject: [PATCH 4/4] orz --- CHANGES/811.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES/811.feature b/CHANGES/811.feature index 57dde062..47c6e321 100644 --- a/CHANGES/811.feature +++ b/CHANGES/811.feature @@ -1,3 +1,3 @@ Add support for Docker context endpoints. Read files such as ~/.docker/context/meta.json and set the socket. -DOCKER_CONTEXT will be prioritized if it is set. \ No newline at end of file +DOCKER_CONTEXT will be prioritized if it is set.