diff --git a/core/testcontainers/core/config.py b/core/testcontainers/core/config.py index 5e038b45..34b8177a 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 @@ -52,6 +53,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: 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 + """ @property def docker_auth_config(self): diff --git a/core/testcontainers/core/docker_client.py b/core/testcontainers/core/docker_client.py index 00534c3e..9b7fe747 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):