Skip to content

Commit 7f22b87

Browse files
committed
Merge pull request #204 from eemmiirr/use-authorization-on-build-fix
Added support to use the credentials from .dockercfg during build
2 parents 6cd5f46 + 8534b78 commit 7f22b87

File tree

3 files changed

+48
-9
lines changed

3 files changed

+48
-9
lines changed

src/main/java/com/github/dockerjava/core/AuthConfigFile.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.List;
88
import java.util.Map;
99

10+
import com.github.dockerjava.api.model.AuthConfigurations;
1011
import org.apache.commons.codec.binary.Base64;
1112
import org.apache.commons.io.FileUtils;
1213
import org.apache.commons.lang.StringUtils;
@@ -50,6 +51,15 @@ public AuthConfig resolveAuthConfig(String hostname) {
5051
return null;
5152
}
5253

54+
public AuthConfigurations getAuthConfigurations() {
55+
final AuthConfigurations authConfigurations = new AuthConfigurations();
56+
for(Map.Entry<String, AuthConfig> authConfigEntry : authConfigMap.entrySet()) {
57+
authConfigurations.addConfig(authConfigEntry.getValue());
58+
}
59+
60+
return authConfigurations;
61+
}
62+
5363
@Override
5464
public int hashCode() {
5565
final int prime = 31;

src/main/java/com/github/dockerjava/core/DockerClientConfig.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import com.github.dockerjava.api.DockerClientException;
1616
import com.github.dockerjava.api.model.AuthConfig;
17+
import com.github.dockerjava.api.model.AuthConfigurations;
1718
import com.github.dockerjava.core.NameParser.HostnameReposName;
1819
import com.github.dockerjava.core.NameParser.ReposTag;
1920

@@ -310,6 +311,24 @@ public AuthConfig effectiveAuthConfig(String imageName) {
310311
return authConfig;
311312
}
312313

314+
public AuthConfigurations getAuthConfigurations() {
315+
String dockerCfgFile = getDockerCfgPath();
316+
if (dockerCfgFile != null) {
317+
AuthConfigFile authConfigFile;
318+
try {
319+
authConfigFile = AuthConfigFile.loadConfig(new File(
320+
dockerCfgFile));
321+
} catch (IOException e) {
322+
throw new DockerClientException(
323+
"Failed to parse dockerCfgFile", e);
324+
}
325+
326+
return authConfigFile.getAuthConfigurations();
327+
}
328+
329+
return new AuthConfigurations();
330+
}
331+
313332
@Override
314333
public boolean equals(Object o) {
315334
if (this == o) return true;

src/main/java/com/github/dockerjava/core/DockerClientImpl.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
import com.github.dockerjava.api.DockerClient;
1111
import com.github.dockerjava.api.command.*;
1212
import com.github.dockerjava.api.model.AuthConfig;
13+
import com.github.dockerjava.api.model.AuthConfigurations;
1314
import com.github.dockerjava.api.model.Identifier;
1415
import com.github.dockerjava.core.command.*;
1516

1617
/**
1718
* @author Konstantin Pelykh (kpelykh@gmail.com)
18-
*
19+
*
1920
* @see "https://github.com/docker/docker/blob/master/api/client/commands.go"
2021
*/
2122
public class DockerClientImpl implements Closeable, DockerClient {
@@ -291,20 +292,29 @@ public CommitCmd commitCmd(String containerId) {
291292

292293
@Override
293294
public BuildImageCmd buildImageCmd() {
294-
return new BuildImageCmdImpl(getDockerCmdExecFactory()
295-
.createBuildImageCmdExec());
295+
return augmentBuildImageCmd(new BuildImageCmdImpl(getDockerCmdExecFactory()
296+
.createBuildImageCmdExec()));
296297
}
297298

298299
@Override
299300
public BuildImageCmd buildImageCmd(File dockerFileOrFolder) {
300-
return new BuildImageCmdImpl(getDockerCmdExecFactory()
301-
.createBuildImageCmdExec(), dockerFileOrFolder);
301+
return augmentBuildImageCmd(new BuildImageCmdImpl(getDockerCmdExecFactory()
302+
.createBuildImageCmdExec(), dockerFileOrFolder));
302303
}
303304

304-
@Override
305-
public BuildImageCmd buildImageCmd(InputStream tarInputStream) {
306-
return new BuildImageCmdImpl(getDockerCmdExecFactory()
307-
.createBuildImageCmdExec(), tarInputStream);
305+
@Override
306+
public BuildImageCmd buildImageCmd(InputStream tarInputStream) {
307+
return augmentBuildImageCmd(new BuildImageCmdImpl(getDockerCmdExecFactory()
308+
.createBuildImageCmdExec(), tarInputStream));
309+
}
310+
311+
private BuildImageCmd augmentBuildImageCmd(BuildImageCmd buildImageCmd) {
312+
final AuthConfigurations authConfigurations = dockerClientConfig.getAuthConfigurations();
313+
if (!authConfigurations.getConfigs().isEmpty()) {
314+
buildImageCmd.withBuildAuthConfigs(authConfigurations);
315+
}
316+
317+
return buildImageCmd;
308318
}
309319

310320
@Override

0 commit comments

Comments
 (0)