-
Notifications
You must be signed in to change notification settings - Fork 291
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(core)!: add support for
tc.host
and de-prioritise docker:dind
(
#388) ## What does this PR do? Adds support for reading the `tc.host` property from the `~/.testcontainers.properties` file. This config will have the highest priority for configuring the Docker client. ## Why is it important This brings [Testcontainers Desktop](https://testcontainers.com/desktop/) support to testcontainers-python and aligns this language with the `TestcontainersHostStrategy` found it testcontainers-java. ## Misc I wasn't able to get a working testcontainers-python development environment set up on my M2 MacBook. This seems to be related to some kind of Cython 3.0.0 issue, that I don't fully understand and trying to fix it breaks the installation of further dependencies (like pymssql). So I was only able to test it in an Ubuntu Codespaces environment (also required some weird Cython workarounds). ## Breaking Changes - To prioritise `tc.host` this PR prioritised having that over true `docker:dind` use cases - This means we stopped trying to automatically infer the container host IP when running inside a `docker:dind` container - When using `-v /var/run/docker.sock:/var/run/docker.sock` you should be unaffected since your containers run on the original host --------- Co-authored-by: Bálint Bartha <39852431+totallyzen@users.noreply.github.com> Co-authored-by: David Ankin <daveankin@gmail.com>
- Loading branch information
1 parent
9e240d0
commit 2db8e6d
Showing
2 changed files
with
53 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,4 @@ | ||
import contextlib | ||
import os | ||
from platform import system | ||
from typing import Optional | ||
|
||
|
@@ -102,18 +101,18 @@ def get_container_host_ip(self) -> str: | |
if host == "localnpipe" and system() == "Windows": | ||
return "localhost" | ||
|
||
# check testcontainers itself runs inside docker container | ||
if inside_container() and not os.getenv("DOCKER_HOST"): | ||
# If newly spawned container's gateway IP address from the docker | ||
# "bridge" network is equal to detected host address, we should use | ||
# container IP address, otherwise fall back to detected host | ||
# address. Even it's inside container, we need to double check, | ||
# because docker host might be set to docker:dind, usually in CI/CD environment | ||
gateway_ip = self.get_docker_client().gateway_ip(self._container.id) | ||
|
||
if gateway_ip == host: | ||
return self.get_docker_client().bridge_ip(self._container.id) | ||
return gateway_ip | ||
# # check testcontainers itself runs inside docker container | ||
# if inside_container() and not os.getenv("DOCKER_HOST") and not host.startswith("http://"): | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
alexanderankin
Author
Collaborator
|
||
# # If newly spawned container's gateway IP address from the docker | ||
# # "bridge" network is equal to detected host address, we should use | ||
# # container IP address, otherwise fall back to detected host | ||
# # address. Even it's inside container, we need to double check, | ||
# # because docker host might be set to docker:dind, usually in CI/CD environment | ||
# gateway_ip = self.get_docker_client().gateway_ip(self._container.id) | ||
|
||
# if gateway_ip == host: | ||
# return self.get_docker_client().bridge_ip(self._container.id) | ||
# return gateway_ip | ||
return host | ||
|
||
@wait_container_is_ready() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Is it possible to add
and not os.getenv("TC_HOST")
here instead of commenting everything out?