Packages
testcontainers
1.13.1
2.3.1
2.3.0
2.2.0
2.1.0
2.1.0-rc1
2.0.0
2.0.0-rc3
2.0.0-rc2
2.0.0-rc
1.14.1
1.14.0
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.0
1.11.8
1.11.7
1.11.6
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.4
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.2
1.4.1
1.4.0
1.3.1
1.3.0
1.2.11
1.2.10
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-beta.1
1.0.0-beta
0.9.3
0.9.2
0.9.1
0.9.0
Testcontainers is an Elixir library that supports ExUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Current section
Files
Jump to
Current section
Files
lib/connection/connection.ex
# SPDX-License-Identifier: MIT
defmodule Testcontainers.Connection do
@moduledoc false
require Logger
alias Testcontainers.Constants
alias Testcontainers.DockerUrl
alias Testcontainers.DockerHostStrategyEvaluator
alias Testcontainers.DockerSocketPathStrategy
alias Testcontainers.DockerHostFromPropertiesStrategy
alias Testcontainers.DockerHostFromEnvStrategy
alias DockerEngineAPI.Connection
@timeout 300_000
def get_connection(options \\ []) do
{docker_host_url, docker_host} =
get_docker_host_url() |> tap(&Logger.info("Docker host: #{inspect(&1, pretty: false)}"))
options =
Keyword.merge(options,
base_url: docker_host_url,
recv_timeout: @timeout,
user_agent: Constants.user_agent()
)
{Connection.new(options), docker_host_url, docker_host}
end
defp get_docker_host_url do
with {:ok, docker_host} <- get_docker_host() do
{DockerUrl.construct(docker_host), docker_host}
else
{:error, error} ->
exit(error)
end
end
defp get_docker_host do
strategies = [
%DockerHostFromPropertiesStrategy{key: "tc.host"},
%DockerHostFromPropertiesStrategy{key: "docker.host"},
%DockerHostFromEnvStrategy{},
%DockerSocketPathStrategy{}
]
DockerHostStrategyEvaluator.run_strategies(strategies, [])
end
end