# testcontainer_ex v0.1.0 - Table of Contents

> TestcontainerEx supports ExUnit tests, providing lightweight, throwaway instances of common databases or anything else that can run in a Docker/Podman container. TestcontainerEx is reworked from Testcontaines lib.

## Modules

- [TestcontainerEx](TestcontainerEx.md): Public API for TestcontainerEx.
- [TestcontainerEx.Application](TestcontainerEx.Application.md): Application callback for TestcontainerEx.
- [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.CommandWaitStrategy](TestcontainerEx.CommandWaitStrategy.md): Considers a container ready as soon as a command runs successfully inside it.

- [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.

- [TestcontainerEx.Connection](TestcontainerEx.Connection.md): Builds a Tesla client connected to the container engine.
- [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.Strategies.Behaviour](TestcontainerEx.Connection.Strategies.Behaviour.md): Protocol for resolving the container engine host URL.
- [TestcontainerEx.Connection.Strategies.ContainerEnv](TestcontainerEx.Connection.Strategies.ContainerEnv.md): Resolves the container engine host from the `CONTAINER_HOST` environment variable.
- [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 the `DOCKER_HOST` environment variable.

- [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.
- [TestcontainerEx.Connection.Url](TestcontainerEx.Connection.Url.md): URL construction and TLS detection for container engine connections.

- [TestcontainerEx.Constants](TestcontainerEx.Constants.md): Library metadata constants.
- [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.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`.
- [TestcontainerEx.DatabaseBehaviour](TestcontainerEx.DatabaseBehaviour.md): A behaviour implemented by database containers used by `TestcontainerEx.Ecto`

- [TestcontainerEx.Docker.Api](TestcontainerEx.Docker.Api.md): Internal Docker API client. All functions require a Tesla 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.
- [TestcontainerEx.Docker.Engine](TestcontainerEx.Docker.Engine.md): Detects which container engine is in use: Docker, Podman, or minikube.
- [TestcontainerEx.DockerCompose](TestcontainerEx.DockerCompose.md): A struct with builder functions for creating a Docker Compose configuration.

- [TestcontainerEx.DockerUrl](TestcontainerEx.DockerUrl.md): Public alias for `TestcontainerEx.Connection.Url`.
- [TestcontainerEx.EmqxContainer](TestcontainerEx.EmqxContainer.md): Provides functionality for creating and managing EMQX container configurations.

- [TestcontainerEx.ExUnit](TestcontainerEx.ExUnit.md): Convenient macros to run containers within ExUnit tests.

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

- [TestcontainerEx.KafkaContainer](TestcontainerEx.KafkaContainer.md): Provides functionality for creating and managing Kafka container configurations.
- [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.MinioContainer](TestcontainerEx.MinioContainer.md): Provides functionality for creating and managing Minio container configurations.

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

- [TestcontainerEx.MongoContainer](TestcontainerEx.MongoContainer.md): Provides functionality for creating and managing Mongo 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.PostgresContainer](TestcontainerEx.PostgresContainer.md): Provides functionality for creating and managing Postgres container configurations.

- [TestcontainerEx.PullPolicy](TestcontainerEx.PullPolicy.md): Pull policies that control whether an image is fetched from a remote registry
before starting a container.

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

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

- [TestcontainerEx.Ryuk](TestcontainerEx.Ryuk.md): Manages the Ryuk reaper container for automatic cleanup of test containers.
- [TestcontainerEx.SeleniumContainer](TestcontainerEx.SeleniumContainer.md): Work in progress. Not stable for use yet.

- [TestcontainerEx.Server](TestcontainerEx.Server.md): GenServer that manages the TestcontainerEx lifecycle.
- [TestcontainerEx.ToxiproxyContainer](TestcontainerEx.ToxiproxyContainer.md): Provides functionality for creating and managing Toxiproxy container configurations.

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

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

## 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...]

