Skip to content

Commit e580ea8

Browse files
author
Marcus Linke
committed
Fix for issue #288
1 parent 63688e0 commit e580ea8

File tree

7 files changed

+148
-7
lines changed

7 files changed

+148
-7
lines changed

src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@
1010

1111
import java.io.File;
1212
import java.io.FileInputStream;
13-
import java.io.IOException;
1413
import java.io.InputStream;
1514
import java.lang.reflect.Method;
1615
import java.util.Collection;
1716
import java.util.UUID;
1817

1918
import org.apache.commons.io.FileUtils;
2019
import org.apache.commons.io.filefilter.TrueFileFilter;
21-
import org.apache.commons.lang.StringUtils;
2220
import org.testng.ITestResult;
2321
import org.testng.annotations.AfterMethod;
2422
import org.testng.annotations.AfterTest;
@@ -31,7 +29,11 @@
3129
import com.github.dockerjava.api.command.CreateContainerResponse;
3230
import com.github.dockerjava.api.command.InspectContainerResponse;
3331
import com.github.dockerjava.api.command.InspectImageResponse;
34-
import com.github.dockerjava.api.model.BuildResponseItem;
32+
import com.github.dockerjava.api.model.AuthConfig;
33+
import com.github.dockerjava.api.model.AuthConfigurations;
34+
import com.github.dockerjava.api.model.ExposedPort;
35+
import com.github.dockerjava.api.model.PortBinding;
36+
import com.github.dockerjava.api.model.Ports;
3537
import com.github.dockerjava.client.AbstractDockerClientTest;
3638
import com.github.dockerjava.core.CompressArchiveUtil;
3739

@@ -225,17 +227,61 @@ public void testAddAndCopySubstitution() throws Exception {
225227
String response = dockerfileBuild(baseDir);
226228
assertThat(response, containsString("testENVSubstitution successfully completed"));
227229
}
228-
230+
229231
@Test
230-
public void testBuilderPerformance() throws Exception {
231-
File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("nginx").getFile());
232+
public void testBuildFromPrivateRegistry() throws Exception {
233+
File baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("privateRegistry").getFile());
232234

233235
String imageId = buildImage(baseDir);
234236

235237
InspectImageResponse inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
236238
assertThat(inspectImageResponse, not(nullValue()));
237239
LOG.info("Image Inspect: {}", inspectImageResponse.toString());
238240

239-
assertThat(inspectImageResponse.getAuthor(), equalTo("Guillaume J. Charmes \"guillaume@dotcloud.com\""));
241+
dockerClient.tagImageCmd(imageId, "testregistry", "2").withForce().exec();
242+
243+
// see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth
244+
CreateContainerResponse testregistry = dockerClient
245+
.createContainerCmd("testregistry:2")
246+
.withName("registry")
247+
.withPortBindings(new PortBinding(new Ports.Binding(5000), ExposedPort.tcp(5000)))
248+
.withEnv("REGISTRY_AUTH=htpasswd", "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm",
249+
"REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd", "REGISTRY_LOG_LEVEL=debug",
250+
"REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt", "REGISTRY_HTTP_TLS_KEY=/certs/domain.key")
251+
.exec();
252+
253+
dockerClient.startContainerCmd(testregistry.getId()).exec();
254+
255+
AuthConfig authConfig = new AuthConfig();
256+
257+
// credentials as configured in /auth/htpasswd
258+
authConfig.setUsername("testuser");
259+
authConfig.setPassword("testpassword");
260+
authConfig.setEmail("foo@bar.de");
261+
authConfig.setServerAddress("localhost:5000");
262+
263+
dockerClient.authCmd().withAuthConfig(authConfig).exec();
264+
dockerClient.tagImageCmd("busybox:latest", "localhost:5000/testuser/busybox", "latest").withForce().exec();
265+
266+
dockerClient.pushImageCmd("localhost:5000/testuser/busybox").withTag("latest").withAuthConfig(authConfig)
267+
.exec(new PushImageResultCallback()).awaitSuccess();
268+
269+
dockerClient.removeImageCmd("busybox:latest").withForce().exec();
270+
271+
dockerClient.removeImageCmd("localhost:5000/testuser/busybox").withForce().exec();
272+
273+
baseDir = new File(Thread.currentThread().getContextClassLoader().getResource("testBuildFromPrivateRegistry")
274+
.getFile());
275+
276+
AuthConfigurations authConfigurations = new AuthConfigurations();
277+
authConfigurations.addConfig(authConfig);
278+
279+
imageId = dockerClient.buildImageCmd(baseDir).withNoCache().withBuildAuthConfigs(authConfigurations)
280+
.exec(new BuildImageResultCallback()).awaitImageId();
281+
282+
inspectImageResponse = dockerClient.inspectImageCmd(imageId).exec();
283+
assertThat(inspectImageResponse, not(nullValue()));
284+
LOG.info("Image Inspect: {}", inspectImageResponse.toString());
285+
240286
}
241287
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM registry:2
2+
ADD auth/htpasswd /auth/htpasswd
3+
ADD certs/* /certs/
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# testuser:testpasswd (see see https://github.com/docker/distribution/blob/master/docs/deploying.md#native-basic-auth)
2+
testuser:$2y$05$gI1hyzOYeLU92o5/DjVtOOHtdGymYbkjqJipZNqPET.ChzXMsz2KS
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
This directory contains self signed certificate for docker registry with CN: "localhost". For testing purposes only.
2+
See https://github.com/docker/distribution/blob/master/docs/insecure.md#using-self-signed-certificates
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIGHzCCBAegAwIBAgIJALeUCTgohkuvMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD
3+
VQQGEwJERTEQMA4GA1UECAwHSGFtYnVyZzEQMA4GA1UEBwwHSGFtYnVyZzEUMBIG
4+
A1UECgwLZG9ja2VyLWphdmExFDASBgNVBAsMC2RvY2tlci1qYXZhMRIwEAYDVQQD
5+
DAlsb2NhbGhvc3QxMjAwBgkqhkiG9w0BCQEWI2RvY2tlci1qYXZhLW1haW50YWlu
6+
QGdvb2dsZW1haWwuY29tMB4XDTE1MDgxNDE3NDkyN1oXDTE2MDgxMzE3NDkyN1ow
7+
gaUxCzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdIYW1idXJnMRAwDgYDVQQHDAdIYW1i
8+
dXJnMRQwEgYDVQQKDAtkb2NrZXItamF2YTEUMBIGA1UECwwLZG9ja2VyLWphdmEx
9+
EjAQBgNVBAMMCWxvY2FsaG9zdDEyMDAGCSqGSIb3DQEJARYjZG9ja2VyLWphdmEt
10+
bWFpbnRhaW5AZ29vZ2xlbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
11+
ggIKAoICAQC/Y6Zn5H/K6nSfNDyNUL8Dl+h8/cLi4QAIRSTp5YIy1VtWbECPF5bj
12+
2TnIB8GK0r40OMbc2c0KYPPNjmeP47pUKPawkoIFQCe+ErvpYqSKD0C6L3Gn2BOp
13+
Cd/K6mgrsgAPaaGpm4p2+bBCLioLYSLFg3St3GSl+TkcylDzBlIDliWLyfqQletg
14+
a7C01RoAfzgcXD551TD+ShbB9ybUWnhZuAhj10WN4YajCBpxv1jBbEHj3JQlnmkG
15+
bOXLsA+nFrkFOyvyKTNz4Ncuj6FxmGs3eqP2FwWcowkAA8Eq2n2TSP4bVojlxWeX
16+
qdBbaejEcWvItGTQ3GyzQ0+4mGwyfghDACdx1dT3HdaXzS+Y+oP17ijcVkDhbKCo
17+
GFgwyN+t4fS2AsTaZ6LXfP9PXzwZd2usj6bMZ/DOMKgmVaK9eYXhP9vjwYYoQIiX
18+
Vh4Lh+O94SG2j6AQPbixEj/3yJLf9owBkUUc/mgOCVgLSNgzBpTXKUlLASh35DSQ
19+
xH6gJ87ljtHk+A8EVXFCDYf9T6b0y3okVBkbnliP/nr4TFbWr91+wHk/OyfTbZYY
20+
uIc288HbC5d2qUGnDV7vMn5Rh8a1gqdZ8onbVuX65D9WQ7WtMMwbAEsMYihmj2WC
21+
AzLHuWmDy6WBd8WRHSJLh+o5zqRi25YDJyNiKb/tXESf580OhqYL1QIDAQABo1Aw
22+
TjAdBgNVHQ4EFgQUWQykHhTnePyTnsym33ex9u+6CKQwHwYDVR0jBBgwFoAUWQyk
23+
HhTnePyTnsym33ex9u+6CKQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
24+
AgEAB9fdGw8lJ7tZWa54xcwUuAFiQJCpJ5D3arKv80Oy+uDWlp4+8ezUnytKj6u4
25+
G4T6jNFhgWM9GFaxeuKPIzx4WO0pFB6bSHQ6lXUOrcn8umFcPzzSyIAdzNYxIVv8
26+
HXvy450XQKVMZPp9EvTgKmF+cDGKrOXlHMpl4lDjUJTuoKFjNB/eA9ropLfD4mvY
27+
uaerHfJRlPUOvKrg0BwRVpaqZdPxULWmnaM5tmYSgQ8gpQab71w8J7Sere6+x+jc
28+
sI0pXVHvsSUOGWY8/Juc7yhV1uYmuA8FBgyn8p38HrErwQDyQJfw5YD9jY+oa+vK
29+
r6qqR9reaJtEipMT9aVY81cH040hZEKjm9Y5U3G+1YKWiHZYRL7pettzEaAh/PW1
30+
1SBgBg611BRrscR4MZ1AAbVh+Wn895Vpa61ZDsA/jIvaGQ1+EmikzWawBiOo4voX
31+
ftUK8nViSBtnwaZ1DwdcEtPKwD8YYWSoBC/tEc6ErjnVXjYBEZc+BaSu+LQUz12t
32+
IK6WvJf6uA+CTUuU9WvVTZtBI98p09ikGNjqM7scaP9BiOeRZQskVNU0MfCblgn/
33+
FugrJHHUzCNyOQpRktl7L2bULDfaHgjlNCbLc9e2NmW/pTTxBShESWxtNyFmPGGY
34+
eiv/xHjlgJzNvHAoHrFj7szAiDQOncRTYeW1k1fe4WVmli8=
35+
-----END CERTIFICATE-----
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN PRIVATE KEY-----
2+
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
51+
mNBmSA/sL18D7k8x9HykstMQh0O2ZurT
52+
-----END PRIVATE KEY-----
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FROM localhost:5000/testuser/busybox:latest

0 commit comments

Comments
 (0)