lib/docker/connection.ex

# SPDX-License-Identifier: MIT
defmodule Testcontainers.Docker.Connection do
  alias DockerEngineAPI.Connection

  @default_host "unix:///var/run/docker.sock"
  @api_version "v1.41"
  @timeout 60_000

  def get_connection(options \\ []) do
    options = Keyword.merge(options, base_url: docker_base_url(), recv_timeout: @timeout)
    Connection.new(options)
  end

  defp docker_base_url do
    case System.get_env("DOCKER_HOST", @default_host) do
      "unix://" <> host -> "http+unix://" <> :uri_string.quote(host) <> "/" <> @api_version
      "tcp://" <> host -> "http://" <> :uri_string.quote(host) <> "/" <> @api_version
    end
  end
end