Skip to content

Commit 90b920a

Browse files
committed
Use default address if null address is given
Closes gh-42958
1 parent 01b6f73 commit 90b920a

File tree

2 files changed

+31
-3
lines changed
  • spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src

2 files changed

+31
-3
lines changed

spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/configuration/ResolvedDockerHost.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,11 @@ public class ResolvedDockerHost extends DockerHost {
5757

5858
@Override
5959
public String getAddress() {
60-
return super.getAddress().startsWith(UNIX_SOCKET_PREFIX)
61-
? super.getAddress().substring(UNIX_SOCKET_PREFIX.length()) : super.getAddress();
60+
String address = super.getAddress();
61+
if (address == null) {
62+
address = getDefaultAddress();
63+
}
64+
return address.startsWith(UNIX_SOCKET_PREFIX) ? address.substring(UNIX_SOCKET_PREFIX.length()) : address;
6265
}
6366

6467
public boolean isRemote() {
@@ -100,7 +103,11 @@ static ResolvedDockerHost from(Environment environment, DockerHostConfiguration
100103
DockerContext context = config.getContext();
101104
return new ResolvedDockerHost(context.getDockerHost(), context.isTlsVerify(), context.getTlsPath());
102105
}
103-
return new ResolvedDockerHost(Platform.isWindows() ? WINDOWS_NAMED_PIPE_PATH : DOMAIN_SOCKET_PATH);
106+
return new ResolvedDockerHost(getDefaultAddress());
107+
}
108+
109+
private static String getDefaultAddress() {
110+
return Platform.isWindows() ? WINDOWS_NAMED_PIPE_PATH : DOMAIN_SOCKET_PATH;
104111
}
105112

106113
private static boolean isTrue(String value) {

spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/configuration/ResolvedDockerHostTests.java

+21
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
* Tests for {@link ResolvedDockerHost}.
4040
*
4141
* @author Scott Frederick
42+
* @author Moritz Halbritter
4243
*/
4344
class ResolvedDockerHostTests {
4445

@@ -64,6 +65,16 @@ void resolveWhenDockerHostIsNullReturnsWindowsDefault() throws Exception {
6465
assertThat(dockerHost.getCertificatePath()).isNull();
6566
}
6667

68+
@Test
69+
@EnabledOnOs(OS.WINDOWS)
70+
void resolveWhenUsingDefaultContextReturnsWindowsDefault() {
71+
this.environment.put("DOCKER_CONTEXT", "default");
72+
ResolvedDockerHost dockerHost = ResolvedDockerHost.from(this.environment::get, null);
73+
assertThat(dockerHost.getAddress()).isEqualTo("//./pipe/docker_engine");
74+
assertThat(dockerHost.isSecure()).isFalse();
75+
assertThat(dockerHost.getCertificatePath()).isNull();
76+
}
77+
6778
@Test
6879
@DisabledOnOs(OS.WINDOWS)
6980
void resolveWhenDockerHostAddressIsNullReturnsLinuxDefault() throws Exception {
@@ -75,6 +86,16 @@ void resolveWhenDockerHostAddressIsNullReturnsLinuxDefault() throws Exception {
7586
assertThat(dockerHost.getCertificatePath()).isNull();
7687
}
7788

89+
@Test
90+
@DisabledOnOs(OS.WINDOWS)
91+
void resolveWhenUsingDefaultContextReturnsLinuxDefault() {
92+
this.environment.put("DOCKER_CONTEXT", "default");
93+
ResolvedDockerHost dockerHost = ResolvedDockerHost.from(this.environment::get, null);
94+
assertThat(dockerHost.getAddress()).isEqualTo("/var/run/docker.sock");
95+
assertThat(dockerHost.isSecure()).isFalse();
96+
assertThat(dockerHost.getCertificatePath()).isNull();
97+
}
98+
7899
@Test
79100
void resolveWhenDockerHostAddressIsLocalReturnsAddress(@TempDir Path tempDir) throws IOException {
80101
String socketFilePath = Files.createTempFile(tempDir, "remote-transport", null).toAbsolutePath().toString();

0 commit comments

Comments
 (0)