Packages
testcontainers
1.11.4
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/docker_host_strategy/docker_socket_path.ex
# SPDX-License-Identifier: MIT
defmodule Testcontainers.DockerSocketPathStrategy do
@moduledoc false
@docker_socket_paths [
Path.expand("~/.docker/run/docker.sock"),
Path.expand("~/.docker/desktop/docker.sock"),
"/run/user/#{:os.getpid()}/podman/podman.sock",
"/run/user/#{:os.getpid()}/docker.sock",
"/var/run/docker.sock"
]
defstruct socket_paths: @docker_socket_paths
defimpl Testcontainers.DockerHostStrategy do
alias Testcontainers.DockerUrl
alias Testcontainers.Logger
def execute(strategy, _input) do
Enum.reduce_while(
strategy.socket_paths,
{:error, {:docker_socket_not_found, []}},
fn path, {:error, {:docker_socket_not_found, tried_paths}} ->
if path != nil && File.exists?(path) do
path_with_scheme = "unix://" <> path
case DockerUrl.test_docker_host(path_with_scheme) do
:ok ->
{:halt, {:ok, path_with_scheme}}
{:error, reason} ->
Logger.log("Docker socket path #{path} failed: #{reason}")
{:cont, {:error, {:docker_socket_not_found, tried_paths ++ [path]}}}
end
else
{:cont, {:error, {:docker_socket_not_found, tried_paths ++ [path]}}}
end
end
)
end
end
end