Skip to content

Commit dc98409

Browse files
committed
Merge branch '4.0.x'
Closes gh-49597
2 parents 369963f + 6779e09 commit dc98409

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,17 @@ public class ResolvedDockerHost extends DockerHost {
5959
public String getAddress() {
6060
String address = super.getAddress();
6161
if (address == null) {
62-
address = getDefaultAddress();
62+
return getDefaultAddress();
6363
}
64-
return address.startsWith(UNIX_SOCKET_PREFIX) ? address.substring(UNIX_SOCKET_PREFIX.length()) : address;
64+
if (address.startsWith(UNIX_SOCKET_PREFIX)) {
65+
return address.substring(UNIX_SOCKET_PREFIX.length());
66+
}
67+
if (address.startsWith("tcp://")) {
68+
while (address.endsWith("/")) {
69+
address = address.substring(0, address.length() - 1);
70+
}
71+
}
72+
return address;
6573
}
6674

6775
public boolean isRemote() {

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,17 @@ void resolveWhenDockerHostAddressIsTcpReturnsAddress() {
140140
assertThat(dockerHost.getCertificatePath()).isEqualTo("/cert-path");
141141
}
142142

143+
@Test
144+
void resolveWhenDockerHostAddressIsTcpWithTrailingReturnsAddress() {
145+
ResolvedDockerHost dockerHost = ResolvedDockerHost.from(this.environment::get,
146+
new DockerConnectionConfiguration.Host("tcp://192.168.99.100:2376/", true, "/cert-path"));
147+
assertThat(dockerHost.isLocalFileReference()).isFalse();
148+
assertThat(dockerHost.isRemote()).isTrue();
149+
assertThat(dockerHost.getAddress()).isEqualTo("tcp://192.168.99.100:2376");
150+
assertThat(dockerHost.isSecure()).isTrue();
151+
assertThat(dockerHost.getCertificatePath()).isEqualTo("/cert-path");
152+
}
153+
143154
@Test
144155
void resolveWhenEnvironmentAddressIsLocalReturnsAddress(@TempDir Path tempDir) throws IOException {
145156
String socketFilePath = Files.createTempFile(tempDir, "remote-transport", null).toAbsolutePath().toString();
@@ -180,6 +191,20 @@ void resolveWhenEnvironmentAddressIsTcpReturnsAddress() {
180191
assertThat(dockerHost.getCertificatePath()).isEqualTo("/cert-path");
181192
}
182193

194+
@Test
195+
void resolveWhenEnvironmentAddressIsTcpWithTrailingSlashReturnsAddress() {
196+
this.environment.put("DOCKER_HOST", "tcp://192.168.99.100:2376/");
197+
this.environment.put("DOCKER_TLS_VERIFY", "1");
198+
this.environment.put("DOCKER_CERT_PATH", "/cert-path");
199+
ResolvedDockerHost dockerHost = ResolvedDockerHost.from(this.environment::get,
200+
new DockerConnectionConfiguration.Host("tcp://1.1.1.1"));
201+
assertThat(dockerHost.isLocalFileReference()).isFalse();
202+
assertThat(dockerHost.isRemote()).isTrue();
203+
assertThat(dockerHost.getAddress()).isEqualTo("tcp://192.168.99.100:2376");
204+
assertThat(dockerHost.isSecure()).isTrue();
205+
assertThat(dockerHost.getCertificatePath()).isEqualTo("/cert-path");
206+
}
207+
183208
@Test
184209
void resolveWithDockerHostContextReturnsAddress() throws Exception {
185210
this.environment.put("DOCKER_CONFIG", pathToResource("with-default-context/config.json"));

0 commit comments

Comments
 (0)