Testcontainers Core
===================
:code:`testcontainers-core` is the core functionality for spinning up Docker containers in test environments.
.. automodule:: testcontainers.core.container
:members:
:undoc-members:
.. autoclass:: testcontainers.core.network.Network
:members:
.. autoclass:: testcontainers.core.image.DockerImage
.. autoclass:: testcontainers.core.generic.DbContainer
.. autoclass:: testcontainers.core.wait_strategies.WaitStrategy
.. autoclass:: testcontainers.core.transferable.Transferable
.. raw:: html
Compose
-------
It is also possible to use Docker Compose functionality:
.. automodule:: testcontainers.compose.compose
:members:
.. raw:: html
Examples
--------
Using `DockerContainer` and `DockerImage` to create a container:
.. doctest::
>>> from testcontainers.core.container import DockerContainer
>>> from testcontainers.core.waiting_utils import wait_for_logs
>>> from testcontainers.core.image import DockerImage
>>> with DockerImage(path=f"{TEST_DIR}/core/image_fixtures/sample/", tag="test-sample:latest") as image:
... with DockerContainer(str(image)) as container:
... delay = wait_for_logs(container, "Test Sample Image")
The `DockerImage` class is used to build the image from the specified path and tag.
The `DockerContainer` class is then used to create a container from the image.
Copying a file from disk into a container:
.. doctest::
>>> import tempfile
>>> from pathlib import Path
>>> from testcontainers.core.container import DockerContainer
>>> with tempfile.TemporaryDirectory() as tmp:
... my_file = Path(tmp) / "my_file.txt"
... _ = my_file.write_text("file content")
... with DockerContainer("bash", command="sleep infinity") as container:
... container.copy_into_container(my_file, "/tmp/my_file.txt")
... result = container.exec("cat /tmp/my_file.txt")
... result.output
b'file content'