# testcontainer_ex v0.5.1 - Table of Contents

> TestcontainerEx is an Elixir library for integration testing with containerized services. Start, stop, and monitor Docker, Podman, Minikube, or Colima containers with a unified API. Supports custom containers.

## Pages

- [TestcontainerEx](readme.md)
- [Connection Helpers](connection_helpers.md)
- [Container Control](container_control.md)
- [Custom Containers](custom_containers.md)
- [Engine Status](engine_status.md)
- [Getting Started with TestcontainerEx](getting_started.md)
- [Wait Strategies](wait_strategies.md)

## Modules

- [TestcontainerEx.CommandWaitStrategy](TestcontainerEx.CommandWaitStrategy.md): Considers a container ready as soon as a command runs successfully inside it.

- [TestcontainerEx.Connection](TestcontainerEx.Connection.md): Builds an Req client connected to the container engine.
- [TestcontainerEx.CustomContainer](TestcontainerEx.CustomContainer.md): A flexible, user-defined container specification with full lifecycle control.
- [TestcontainerEx.DatabaseBehaviour](TestcontainerEx.DatabaseBehaviour.md): A behaviour implemented by database containers used by `TestcontainerEx.Ecto`

- [TestcontainerEx.DockerCompose](TestcontainerEx.DockerCompose.md): A struct with builder functions for creating a Docker Compose configuration.

- [TestcontainerEx.HttpWaitStrategy](TestcontainerEx.HttpWaitStrategy.md): Considers the container as ready when a http request is successful.

- [TestcontainerEx.LogWaitStrategy](TestcontainerEx.LogWaitStrategy.md): Considers the container as ready as soon as a specific log message is detected in the container's log stream.

- [TestcontainerEx.MinistackContainer](TestcontainerEx.MinistackContainer.md): Provides functionality for creating and managing Ministack container configurations.

- [TestcontainerEx.MySqlContainer](TestcontainerEx.MySqlContainer.md): Provides functionality for creating and managing MySQL container configurations.

- [TestcontainerEx.Network](TestcontainerEx.Network.md): Docker network operations.

- [TestcontainerEx.PortWaitStrategy](TestcontainerEx.PortWaitStrategy.md): Considers the container as ready when it successfully accepts connections on the specified port.

- [TestcontainerEx.RabbitMQContainer](TestcontainerEx.RabbitMQContainer.md): Provides functionality for creating and managing RabbitMQ container configurations.

- [TestcontainerEx.Wait](TestcontainerEx.Wait.md): Convenience aliases for all wait strategies.
- [TestcontainerEx.WaitStrategy](TestcontainerEx.WaitStrategy.md): Defines the protocol/interface for the wait strategies in `TestcontainerEx`

- Core API
  - [TestcontainerEx](TestcontainerEx.md): Public API for TestcontainerEx.
  - [TestcontainerEx.Application](TestcontainerEx.Application.md): Application callback for TestcontainerEx.
  - [TestcontainerEx.Server](TestcontainerEx.Server.md): GenServer that manages the TestcontainerEx lifecycle.

- Container Management
  - [TestcontainerEx.Container](TestcontainerEx.Container.md): Convenience module for container configuration.
  - [TestcontainerEx.Container.Builder](TestcontainerEx.Container.Builder.md): Protocol for building container configurations from domain-specific
container types (e.g. RedisContainer, PostgresContainer).
  - [TestcontainerEx.Container.BuilderHelper](TestcontainerEx.Container.BuilderHelper.md): Applies common labels and reuse logic to container configurations.
  - [TestcontainerEx.Container.Config](TestcontainerEx.Container.Config.md): Container configuration struct and builder functions.
  - [TestcontainerEx.Container.Info](TestcontainerEx.Container.Info.md): Convenience functions for extracting runtime information from a started container.
  - [TestcontainerEx.Container.Lifecycle](TestcontainerEx.Container.Lifecycle.md): Orchestrates container lifecycle: create, start, wait, pull, copy.
  - [TestcontainerEx.ContainerBuilder](TestcontainerEx.ContainerBuilder.md): Convenience module for building container configurations.
  - [TestcontainerEx.ContainerBuilderHelper](TestcontainerEx.ContainerBuilderHelper.md): Public alias for `TestcontainerEx.Container.BuilderHelper`.

- Pre-built Containers
  - [TestcontainerEx.CassandraContainer](TestcontainerEx.CassandraContainer.md): Provides functionality for creating and managing Cassandra container configurations.

  - [TestcontainerEx.CephContainer](TestcontainerEx.CephContainer.md): Provides functionality for creating and managing Ceph container configurations.

  - [TestcontainerEx.ElixirContainer](TestcontainerEx.ElixirContainer.md): Provides functionality for creating and managing Elixir/Erlang container
configurations — useful for testing distributed Erlang, remote deployment,
clustering, and running Elixir releases inside containers.
  - [TestcontainerEx.EmqxContainer](TestcontainerEx.EmqxContainer.md): Provides functionality for creating and managing EMQX container configurations.

  - [TestcontainerEx.KafkaContainer](TestcontainerEx.KafkaContainer.md): Provides functionality for creating and managing Kafka container configurations.
  - [TestcontainerEx.MinioContainer](TestcontainerEx.MinioContainer.md): Provides functionality for creating and managing Minio container configurations.

  - [TestcontainerEx.MongoContainer](TestcontainerEx.MongoContainer.md): Provides functionality for creating and managing Mongo container configurations.

  - [TestcontainerEx.PostgresContainer](TestcontainerEx.PostgresContainer.md): Provides functionality for creating and managing Postgres container configurations.

  - [TestcontainerEx.RedisContainer](TestcontainerEx.RedisContainer.md): Provides functionality for creating and managing Redis container configurations.

  - [TestcontainerEx.ScyllaContainer](TestcontainerEx.ScyllaContainer.md): Provides functionality for creating and managing ScyllaDB container configurations.
  - [TestcontainerEx.SeleniumContainer](TestcontainerEx.SeleniumContainer.md): Work in progress. Not stable for use yet.

  - [TestcontainerEx.ToxiproxyContainer](TestcontainerEx.ToxiproxyContainer.md): Provides functionality for creating and managing Toxiproxy container configurations.

- Docker Engine
  - [TestcontainerEx.Docker.Control](TestcontainerEx.Docker.Control.md): Low-level container control operations via the Docker Engine API.
  - [TestcontainerEx.Docker.Engine](TestcontainerEx.Docker.Engine.md): Detects which container engine is in use: Docker, Podman, or minikube.
  - [TestcontainerEx.Docker.Status](TestcontainerEx.Docker.Status.md): Query runtime status of container engines (Docker, Podman, Minikube, Colima)
directly via their APIs or CLI.
  - [TestcontainerEx.DockerUrl](TestcontainerEx.DockerUrl.md): Public alias for `TestcontainerEx.Connection.Url`.

- Docker API
  - [TestcontainerEx.Docker.Api](TestcontainerEx.Docker.Api.md): Internal Docker API client. All functions require a Req connection.

  - [TestcontainerEx.Docker.Auth](TestcontainerEx.Docker.Auth.md): Resolves Docker registry credentials from the user's Docker config file
(typically `~/.docker/config.json`) and returns a ready-to-send
`X-Registry-Auth` header value.

- Connection &amp; Resolution
  - [TestcontainerEx.Connection.Resolver](TestcontainerEx.Connection.Resolver.md): Orchestrates host resolution strategies in priority order.
  - [TestcontainerEx.Connection.Ssl](TestcontainerEx.Connection.Ssl.md): TLS/SSL option building for container engine connections.
  - [TestcontainerEx.Connection.Url](TestcontainerEx.Connection.Url.md): URL construction and TLS detection for container engine connections.

- Connection Strategies
  - [TestcontainerEx.Connection.Strategies.Behaviour](TestcontainerEx.Connection.Strategies.Behaviour.md): Protocol for resolving the container engine host URL.
  - [TestcontainerEx.Connection.Strategies.Colima](TestcontainerEx.Connection.Strategies.Colima.md): Resolves the container engine host by querying `colima status`.
  - [TestcontainerEx.Connection.Strategies.ContainerEnv](TestcontainerEx.Connection.Strategies.ContainerEnv.md): Resolves the container engine host from Podman-style environment variables.
  - [TestcontainerEx.Connection.Strategies.Dotenv](TestcontainerEx.Connection.Strategies.Dotenv.md): Resolves the container engine host from a `.env` file in the project root.
  - [TestcontainerEx.Connection.Strategies.Env](TestcontainerEx.Connection.Strategies.Env.md): Resolves the container engine host from environment variables.
  - [TestcontainerEx.Connection.Strategies.Minikube](TestcontainerEx.Connection.Strategies.Minikube.md): Resolves the container engine host by evaluating `minikube docker-env`.
  - [TestcontainerEx.Connection.Strategies.Properties](TestcontainerEx.Connection.Strategies.Properties.md): Resolves the container engine host from `.testcontainer_ex.properties`.
  - [TestcontainerEx.Connection.Strategies.Socket](TestcontainerEx.Connection.Strategies.Socket.md): Resolves the container engine host by scanning well-known Unix socket paths.

- Compose
  - [TestcontainerEx.Compose.Cli](TestcontainerEx.Compose.Cli.md): Subprocess wrapper for Docker Compose CLI interaction.
  - [TestcontainerEx.Compose.ComposeEnvironment](TestcontainerEx.Compose.ComposeEnvironment.md): Represents the started state of a Docker Compose environment.

  - [TestcontainerEx.Compose.ComposeService](TestcontainerEx.Compose.ComposeService.md): A lightweight struct representing a service within a Docker Compose environment.

- Utilities
  - [TestcontainerEx.Constants](TestcontainerEx.Constants.md): Library metadata constants.
  - [TestcontainerEx.Log](TestcontainerEx.Log.md): Structured logging convenience for TestcontainerEx.
  - [TestcontainerEx.PullPolicy](TestcontainerEx.PullPolicy.md): Pull policies that control whether an image is fetched from a remote registry
before starting a container.

  - [TestcontainerEx.Util.Constants](TestcontainerEx.Util.Constants.md): Library metadata constants.

- Testing &amp; Observability
  - [TestcontainerEx.Debug](TestcontainerEx.Debug.md): Runtime debugging and inspection helpers for TestcontainerEx.
  - [TestcontainerEx.ExUnit](TestcontainerEx.ExUnit.md): Convenient macros to run containers within ExUnit tests.

  - [TestcontainerEx.Recon](TestcontainerEx.Recon.md): Debugging helpers powered by `:recon` (Erlang runtime inspection).
  - [TestcontainerEx.Telemetry](TestcontainerEx.Telemetry.md): Telemetry integration for TestcontainerEx.

- Reaper (Ryuk)
  - [TestcontainerEx.Ryuk](TestcontainerEx.Ryuk.md): Manages the Ryuk reaper container for automatic cleanup of test containers.

## Mix Tasks

- [mix testcontainer_ex.run](Mix.Tasks.TestcontainerEx.Run.md): Usage:
  mix testcontainer_ex.run [sub_task] [--database DB] [--db-volume VOLUME] [sub_task_args...]
- [mix testcontainer_ex.test](Mix.Tasks.TestcontainerEx.Test.md): Runs Docker-dependent tests with automatic Ryuk setup and teardown.

