diff --git a/core/src/main/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategy.java index 969610373d1..ae483c37559 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategy.java @@ -70,6 +70,11 @@ public TransportConfig getTransportConfig() { .build(); } + @Override + public String getRemoteDockerUnixSocketPath() { + return getSetting("docker.socket.override").orElse(null); + } + @Override protected int getPriority() { return PRIORITY; diff --git a/core/src/test/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategyTest.java b/core/src/test/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategyTest.java index 062c3d793a5..b73d40a94c7 100644 --- a/core/src/test/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategyTest.java +++ b/core/src/test/java/org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategyTest.java @@ -96,6 +96,39 @@ public void testWhenDockerHostPresent() { assertThat(transportConfig.getSslConfig()).isEqualTo(defaultSSLConfig); } + @Test + public void testWhenDockerSocketPresent() { + Mockito + .doReturn("auto") + .when(TestcontainersConfiguration.getInstance()) + .getEnvVarOrProperty(eq("dockerconfig.source"), anyString()); + Mockito + .doReturn(null) + .when(TestcontainersConfiguration.getInstance()) + .getEnvVarOrUserProperty(eq("docker.host"), isNull()); + Mockito + .doReturn(null) + .when(TestcontainersConfiguration.getInstance()) + .getEnvVarOrUserProperty(eq("docker.tls.verify"), isNull()); + Mockito + .doReturn(null) + .when(TestcontainersConfiguration.getInstance()) + .getEnvVarOrUserProperty(eq("docker.cert.path"), isNull()); + Mockito + .doReturn("/var/run/docker-alt.sock") + .when(TestcontainersConfiguration.getInstance()) + .getEnvVarOrUserProperty(eq("docker.socket.override"), isNull()); + + EnvironmentAndSystemPropertyClientProviderStrategy strategy = new EnvironmentAndSystemPropertyClientProviderStrategy(); + + TransportConfig transportConfig = strategy.getTransportConfig(); + assertThat(transportConfig.getDockerHost().toString()).isEqualTo(defaultDockerHost); + assertThat(transportConfig.getSslConfig()).isEqualTo(defaultSSLConfig); + + String remoteDockerUnixSocketPath = strategy.getRemoteDockerUnixSocketPath(); + assertThat(remoteDockerUnixSocketPath).isEqualTo("/var/run/docker-alt.sock"); + } + @Test public void testWhenDockerHostAndSSLConfigPresent() throws IOException { Path tempDir = Files.createTempDirectory("testcontainers-test"); diff --git a/docs/features/configuration.md b/docs/features/configuration.md index d874b16ad7b..6468f60aa8a 100644 --- a/docs/features/configuration.md +++ b/docs/features/configuration.md @@ -121,9 +121,10 @@ illustrates usage: ```properties docker.client.strategy=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy -docker.host=tcp\://my.docker.host\:1234 # Equivalent to the DOCKER_HOST environment variable. Colons should be escaped. -docker.tls.verify=1 # Equivalent to the DOCKER_TLS_VERIFY environment variable -docker.cert.path=/some/path # Equivalent to the DOCKER_CERT_PATH environment variable +docker.host=tcp\://my.docker.host\:1234 # Equivalent to the DOCKER_HOST environment variable. Colons should be escaped. +docker.socket.override=/var/run/docker-alt.sock # Equivalent to the TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE environment variable. +docker.tls.verify=1 # Equivalent to the DOCKER_TLS_VERIFY environment variable +docker.cert.path=/some/path # Equivalent to the DOCKER_CERT_PATH environment variable ``` In addition, you can deactivate this behaviour by specifying: ```properties