From 838970a09917681a0748982bd2115eee06462491 Mon Sep 17 00:00:00 2001 From: Benjamin Muschko Date: Thu, 5 Mar 2020 13:16:53 -0700 Subject: [PATCH 1/2] Introduce extrahosts parameter for building an image --- .../dockerjava/api/command/BuildImageCmd.java | 11 +++++++++++ .../dockerjava/core/RemoteApiVersion.java | 1 + .../core/command/BuildImageCmdImpl.java | 17 +++++++++++++++++ .../core/exec/BuildImageCmdExec.java | 4 ++++ .../github/dockerjava/cmd/BuildImageCmdIT.java | 18 ++++++++++++++++++ 5 files changed, 51 insertions(+) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java index 2556930c0..cf5800867 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java @@ -145,6 +145,12 @@ public interface BuildImageCmd extends AsyncDockerCmd getExtraHosts(); + // setters /** @@ -223,6 +229,11 @@ public interface BuildImageCmd extends AsyncDockerCmd extraHosts; + public BuildImageCmdImpl(BuildImageCmd.Exec exec) { super(exec); } @@ -218,6 +221,11 @@ public Long getShmsize() { return shmsize; } + @Override + public Set getExtraHosts() { + return extraHosts; + } + // setters /** @@ -402,6 +410,15 @@ public BuildImageCmd withTarget(String target) { return this; } + @Override + public BuildImageCmd withExtraHost(String extraHost) { + if (this.extraHosts == null) { + this.extraHosts = new HashSet<>(); + } + this.extraHosts.add(extraHost); + return this; + } + @Override public void close() { super.close(); diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/BuildImageCmdExec.java b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/BuildImageCmdExec.java index 1a8cd37e5..edf9b6bf9 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/BuildImageCmdExec.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/BuildImageCmdExec.java @@ -117,6 +117,10 @@ protected Void execute0(BuildImageCmd command, ResultCallback webTarget = webTarget.queryParam("target", command.getTarget()); } + if (command.getExtraHosts() != null) { + webTarget = webTarget.queryParamsSet("extrahosts", command.getExtraHosts()); + } + LOGGER.trace("POST: {}", webTarget); InvocationBuilder builder = resourceWithOptionalAuthConfig(command, webTarget.request()) diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java index 1431fc2ab..e833e64e9 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java @@ -31,6 +31,7 @@ import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_21; import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_23; import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_27; +import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_28; import static com.github.dockerjava.junit.DockerMatchers.isGreaterOrEqual; import static org.apache.commons.io.FileUtils.writeStringToFile; import static org.hamcrest.MatcherAssert.assertThat; @@ -331,6 +332,23 @@ public void quiet() { LOG.info("Image Inspect: {}", inspectImageResponse.toString()); } + @Test + public void extraHosts() { + assumeThat(dockerRule, isGreaterOrEqual(VERSION_1_28)); + + File baseDir = fileFromBuildTestResource("labels"); + + String imageId = dockerRule.getClient() + .buildImageCmd(baseDir) + .withExtraHost("host1") + .start() + .awaitImageId(); + + InspectImageResponse inspectImageResponse = dockerRule.getClient().inspectImageCmd(imageId).exec(); + assertThat(inspectImageResponse, not(nullValue())); + LOG.info("Image Inspect: {}", inspectImageResponse.toString()); + } + public void dockerfileNotInBaseDirectory() throws Exception { File baseDirectory = fileFromBuildTestResource("dockerfileNotInBaseDirectory"); File dockerfile = fileFromBuildTestResource("dockerfileNotInBaseDirectory/dockerfileFolder/Dockerfile"); From e38bbd8882e69bbd1907822412d024c5539b3bff Mon Sep 17 00:00:00 2001 From: Benjamin Muschko Date: Sat, 7 Mar 2020 14:13:07 -0700 Subject: [PATCH 2/2] Pass in a Set of extra hosts --- .../dockerjava/api/command/BuildImageCmd.java | 13 +++++------ .../core/command/BuildImageCmdImpl.java | 23 ++++++++----------- .../dockerjava/cmd/BuildImageCmdIT.java | 2 +- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java index cf5800867..1b7b76a67 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java @@ -1,17 +1,16 @@ package com.github.dockerjava.api.command; +import com.github.dockerjava.api.model.AuthConfigurations; +import com.github.dockerjava.api.model.BuildResponseItem; + +import javax.annotation.CheckForNull; +import javax.annotation.Nonnull; import java.io.File; import java.io.InputStream; import java.net.URI; import java.util.Map; import java.util.Set; -import javax.annotation.CheckForNull; -import javax.annotation.Nonnull; - -import com.github.dockerjava.api.model.AuthConfigurations; -import com.github.dockerjava.api.model.BuildResponseItem; - /** * Build an image from Dockerfile. *

@@ -232,7 +231,7 @@ public interface BuildImageCmd extends AsyncDockerCmd extraHosts); @Override default BuildImageResultCallback start() { diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java index afbe76590..1bd1af576 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java @@ -1,23 +1,21 @@ package com.github.dockerjava.core.command; -import static com.google.common.base.Preconditions.checkNotNull; +import com.github.dockerjava.api.command.BuildImageCmd; +import com.github.dockerjava.api.model.AuthConfigurations; +import com.github.dockerjava.api.model.BuildResponseItem; +import com.github.dockerjava.core.dockerfile.Dockerfile; +import com.github.dockerjava.core.util.FilePathUtil; +import javax.annotation.CheckForNull; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Set; -import com.github.dockerjava.api.command.BuildImageCmd; -import com.github.dockerjava.api.model.AuthConfigurations; -import com.github.dockerjava.api.model.BuildResponseItem; -import com.github.dockerjava.core.dockerfile.Dockerfile; -import com.github.dockerjava.core.util.FilePathUtil; - -import javax.annotation.CheckForNull; +import static com.google.common.base.Preconditions.checkNotNull; /** * Build an image from Dockerfile. @@ -411,11 +409,8 @@ public BuildImageCmd withTarget(String target) { } @Override - public BuildImageCmd withExtraHost(String extraHost) { - if (this.extraHosts == null) { - this.extraHosts = new HashSet<>(); - } - this.extraHosts.add(extraHost); + public BuildImageCmd withExtraHosts(Set extraHosts) { + this.extraHosts = extraHosts; return this; } diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java index e833e64e9..a0402b975 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java @@ -340,7 +340,7 @@ public void extraHosts() { String imageId = dockerRule.getClient() .buildImageCmd(baseDir) - .withExtraHost("host1") + .withExtraHosts(new HashSet<>(Arrays.asList("host1"))) .start() .awaitImageId();