Skip to content

Commit e4d9c19

Browse files
committed
Add explicit API DockerContainer.with_network(Network)
1 parent 7542743 commit e4d9c19

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

core/testcontainers/core/container.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
from typing import Iterable, Optional, Tuple
44

5+
from .network import Network
56
from .waiting_utils import wait_container_is_ready
67
from .docker_client import DockerClient
78
from .exceptions import ContainerStartException
@@ -31,6 +32,7 @@ def __init__(self, image: str, docker_client_kw: Optional[dict] = None, **kwargs
3132
self._container = None
3233
self._command = None
3334
self._name = None
35+
self._network: Optional[Network] = None
3436
self._kwargs = kwargs
3537

3638
def with_env(self, key: str, value: str) -> 'DockerContainer':
@@ -46,6 +48,10 @@ def with_exposed_ports(self, *ports: Iterable[int]) -> 'DockerContainer':
4648
self.ports[port] = None
4749
return self
4850

51+
def with_network(self, network: Network) -> 'DockerContainer':
52+
self._network = network
53+
return self
54+
4955
def with_kwargs(self, **kwargs) -> 'DockerContainer':
5056
self._kwargs = kwargs
5157
return self
@@ -63,6 +69,8 @@ def start(self) -> 'DockerContainer':
6369
name=self._name, volumes=self.volumes, **self._kwargs
6470
)
6571
logger.info("Container started: %s", self._container.short_id)
72+
if self._network:
73+
self._network.connect(self._container.id)
6674
return self
6775

6876
def stop(self, force=True, delete_volume=True) -> None:

core/testcontainers/core/network.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ def __init__(self, docker_client_kw: Optional[dict] = None, **kwargs) -> None:
2626
self._docker = DockerClient(**(docker_client_kw or {}))
2727
self._kwargs = kwargs
2828

29+
def connect(self, container_id: str):
30+
self._network.connect(container_id)
31+
2932
def remove(self) -> None:
3033
self._network.remove()
3134

core/tests/test_network.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ def test_network_gets_created_and_cleaned_up():
1515
def test_containers_can_communicate_over_network():
1616
with Network() as network:
1717
with DockerContainer("nginx:alpine-slim").with_name(
18-
"alpine1").with_kwargs(network=network.name) as alpine1:
18+
"alpine1").with_network(network) as alpine1:
1919
with DockerContainer("nginx:alpine-slim").with_name(
20-
"alpine2").with_kwargs(network=network.name) as alpine2:
20+
"alpine2").with_network(network) as alpine2:
2121
status, output = alpine1.exec("ping -c 1 alpine2")
2222
assert status == 0
2323
assert "64 bytes" in str(output)

0 commit comments

Comments
 (0)