diff --git a/src/main/java/com/github/dockerjava/core/AuthConfigFile.java b/src/main/java/com/github/dockerjava/core/AuthConfigFile.java index 24c7aa5cf..862259a8e 100644 --- a/src/main/java/com/github/dockerjava/core/AuthConfigFile.java +++ b/src/main/java/com/github/dockerjava/core/AuthConfigFile.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; +import com.github.dockerjava.api.model.AuthConfigurations; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; @@ -50,6 +51,15 @@ public AuthConfig resolveAuthConfig(String hostname) { return null; } + public AuthConfigurations getAuthConfigurations() { + final AuthConfigurations authConfigurations = new AuthConfigurations(); + for(Map.Entry authConfigEntry : authConfigMap.entrySet()) { + authConfigurations.addConfig(authConfigEntry.getValue()); + } + + return authConfigurations; + } + @Override public int hashCode() { final int prime = 31; diff --git a/src/main/java/com/github/dockerjava/core/DockerClientConfig.java b/src/main/java/com/github/dockerjava/core/DockerClientConfig.java index 05491ec6f..7e0b57b0e 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientConfig.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientConfig.java @@ -14,6 +14,7 @@ import com.github.dockerjava.api.DockerClientException; import com.github.dockerjava.api.model.AuthConfig; +import com.github.dockerjava.api.model.AuthConfigurations; import com.github.dockerjava.core.NameParser.HostnameReposName; import com.github.dockerjava.core.NameParser.ReposTag; @@ -310,6 +311,24 @@ public AuthConfig effectiveAuthConfig(String imageName) { return authConfig; } + public AuthConfigurations getAuthConfigurations() { + String dockerCfgFile = getDockerCfgPath(); + if (dockerCfgFile != null) { + AuthConfigFile authConfigFile; + try { + authConfigFile = AuthConfigFile.loadConfig(new File( + dockerCfgFile)); + } catch (IOException e) { + throw new DockerClientException( + "Failed to parse dockerCfgFile", e); + } + + return authConfigFile.getAuthConfigurations(); + } + + return new AuthConfigurations(); + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/com/github/dockerjava/core/DockerClientImpl.java b/src/main/java/com/github/dockerjava/core/DockerClientImpl.java index 534c58ebf..7e96225f8 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientImpl.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientImpl.java @@ -10,12 +10,13 @@ import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.*; import com.github.dockerjava.api.model.AuthConfig; +import com.github.dockerjava.api.model.AuthConfigurations; import com.github.dockerjava.api.model.Identifier; import com.github.dockerjava.core.command.*; /** * @author Konstantin Pelykh (kpelykh@gmail.com) - * + * * @see "https://github.com/docker/docker/blob/master/api/client/commands.go" */ public class DockerClientImpl implements Closeable, DockerClient { @@ -291,20 +292,29 @@ public CommitCmd commitCmd(String containerId) { @Override public BuildImageCmd buildImageCmd() { - return new BuildImageCmdImpl(getDockerCmdExecFactory() - .createBuildImageCmdExec()); + return augmentBuildImageCmd(new BuildImageCmdImpl(getDockerCmdExecFactory() + .createBuildImageCmdExec())); } @Override public BuildImageCmd buildImageCmd(File dockerFileOrFolder) { - return new BuildImageCmdImpl(getDockerCmdExecFactory() - .createBuildImageCmdExec(), dockerFileOrFolder); + return augmentBuildImageCmd(new BuildImageCmdImpl(getDockerCmdExecFactory() + .createBuildImageCmdExec(), dockerFileOrFolder)); } - @Override - public BuildImageCmd buildImageCmd(InputStream tarInputStream) { - return new BuildImageCmdImpl(getDockerCmdExecFactory() - .createBuildImageCmdExec(), tarInputStream); + @Override + public BuildImageCmd buildImageCmd(InputStream tarInputStream) { + return augmentBuildImageCmd(new BuildImageCmdImpl(getDockerCmdExecFactory() + .createBuildImageCmdExec(), tarInputStream)); + } + + private BuildImageCmd augmentBuildImageCmd(BuildImageCmd buildImageCmd) { + final AuthConfigurations authConfigurations = dockerClientConfig.getAuthConfigurations(); + if (!authConfigurations.getConfigs().isEmpty()) { + buildImageCmd.withBuildAuthConfigs(authConfigurations); + } + + return buildImageCmd; } @Override