diff --git a/nginx/testcontainers/nginx/__init__.py b/nginx/testcontainers/nginx/__init__.py index 0226d700..d0680f19 100644 --- a/nginx/testcontainers/nginx/__init__.py +++ b/nginx/testcontainers/nginx/__init__.py @@ -10,8 +10,13 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import urllib.error +import urllib.parse +import urllib.request + from testcontainers.core.container import DockerContainer from testcontainers.core.utils import raise_for_deprecated_parameter +from testcontainers.core.waiting_utils import wait_container_is_ready class NginxContainer(DockerContainer): @@ -20,3 +25,17 @@ def __init__(self, image: str = "nginx:latest", port: int = 80, **kwargs) -> Non super(NginxContainer, self).__init__(image, **kwargs) self.port = port self.with_exposed_ports(self.port) + + def start(self) -> 'NginxContainer': + super().start() + + host = self.get_container_host_ip() + port = str(self.get_exposed_port(self.port)) + self._connect(host, port) + + return self + + @wait_container_is_ready(urllib.error.URLError) + def _connect(self, host: str, port: str) -> None: + url = urllib.parse.urlunsplit(('http', f'{host}:{port}', '', '', '')) + urllib.request.urlopen(url, timeout=1)