From 36ca7aff27822d796b5036580a2a95ac5f7bc961 Mon Sep 17 00:00:00 2001 From: David Ankin Date: Thu, 6 Jun 2024 10:15:38 -0400 Subject: [PATCH 1/3] fix: mvoe TESTCONTAINERS_HOST_OVERRIDE to config.py --- core/testcontainers/core/config.py | 6 +++++- core/testcontainers/core/docker_client.py | 8 ++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/testcontainers/core/config.py b/core/testcontainers/core/config.py index 5e038b451..542e6cbac 100644 --- a/core/testcontainers/core/config.py +++ b/core/testcontainers/core/config.py @@ -40,7 +40,6 @@ def read_tc_properties() -> dict[str, str]: _WARNINGS = {"DOCKER_AUTH_CONFIG": "DOCKER_AUTH_CONFIG is experimental, see testcontainers/testcontainers-python#566"} - @dataclass class TestcontainersConfiguration: max_tries: int = MAX_TRIES @@ -52,6 +51,11 @@ class TestcontainersConfiguration: ryuk_reconnection_timeout: str = RYUK_RECONNECTION_TIMEOUT tc_properties: dict[str, str] = field(default_factory=read_tc_properties) _docker_auth_config: Optional[str] = field(default_factory=lambda: environ.get("DOCKER_AUTH_CONFIG")) + tc_host_override: str = environ.get("TC_HOST", environ.get("TESTCONTAINERS_HOST_OVERRIDE")) + """ + https://github.com/testcontainers/testcontainers-go/blob/dd76d1e39c654433a3d80429690d07abcec04424/docker.go#L644 + if os env TC_HOST is set, use it + """ @property def docker_auth_config(self): diff --git a/core/testcontainers/core/docker_client.py b/core/testcontainers/core/docker_client.py index 00534c3e9..9b7fe7479 100644 --- a/core/testcontainers/core/docker_client.py +++ b/core/testcontainers/core/docker_client.py @@ -187,18 +187,14 @@ def host(self) -> str: """ Get the hostname or ip address of the docker host. """ - # https://github.com/testcontainers/testcontainers-go/blob/dd76d1e39c654433a3d80429690d07abcec04424/docker.go#L644 - # if os env TC_HOST is set, use it - host = os.environ.get("TC_HOST") - if not host: - host = os.environ.get("TESTCONTAINERS_HOST_OVERRIDE") + host = c.tc_host_override if host: return host try: url = urllib.parse.urlparse(self.client.api.base_url) except ValueError: - return None + return "localhost" if "http" in url.scheme or "tcp" in url.scheme: return url.hostname if inside_container() and ("unix" in url.scheme or "npipe" in url.scheme): From 9809360da3b78d1965ba370dcaafab46fd81b1cb Mon Sep 17 00:00:00 2001 From: David Ankin Date: Thu, 6 Jun 2024 12:59:58 -0400 Subject: [PATCH 2/3] ruff --- core/testcontainers/core/config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/testcontainers/core/config.py b/core/testcontainers/core/config.py index 542e6cbac..33cf12940 100644 --- a/core/testcontainers/core/config.py +++ b/core/testcontainers/core/config.py @@ -14,6 +14,7 @@ RYUK_DISABLED: bool = environ.get("TESTCONTAINERS_RYUK_DISABLED", "false") == "true" RYUK_DOCKER_SOCKET: str = environ.get("TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE", "/var/run/docker.sock") RYUK_RECONNECTION_TIMEOUT: str = environ.get("RYUK_RECONNECTION_TIMEOUT", "10s") +TC_HOST_OVERRIDE: Optional[str] = environ.get("TC_HOST", environ.get("TESTCONTAINERS_HOST_OVERRIDE")) TC_FILE = ".testcontainers.properties" TC_GLOBAL = Path.home() / TC_FILE @@ -51,7 +52,7 @@ class TestcontainersConfiguration: ryuk_reconnection_timeout: str = RYUK_RECONNECTION_TIMEOUT tc_properties: dict[str, str] = field(default_factory=read_tc_properties) _docker_auth_config: Optional[str] = field(default_factory=lambda: environ.get("DOCKER_AUTH_CONFIG")) - tc_host_override: str = environ.get("TC_HOST", environ.get("TESTCONTAINERS_HOST_OVERRIDE")) + tc_host_override: Optional[str] = TC_HOST_OVERRIDE """ https://github.com/testcontainers/testcontainers-go/blob/dd76d1e39c654433a3d80429690d07abcec04424/docker.go#L644 if os env TC_HOST is set, use it From 89d7c37cd6ad3311dbf19dcfbc5135ed14124f08 Mon Sep 17 00:00:00 2001 From: David Ankin Date: Thu, 6 Jun 2024 15:55:05 -0400 Subject: [PATCH 3/3] python best --- core/testcontainers/core/config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/core/testcontainers/core/config.py b/core/testcontainers/core/config.py index 33cf12940..34b8177a2 100644 --- a/core/testcontainers/core/config.py +++ b/core/testcontainers/core/config.py @@ -41,6 +41,7 @@ def read_tc_properties() -> dict[str, str]: _WARNINGS = {"DOCKER_AUTH_CONFIG": "DOCKER_AUTH_CONFIG is experimental, see testcontainers/testcontainers-python#566"} + @dataclass class TestcontainersConfiguration: max_tries: int = MAX_TRIES