X Tutup
Skip to content

Commit 077de66

Browse files
committed
Merge pull request #156 from kalmanb/withExtraHosts
Add support for configuring ExtraHosts - version 2
2 parents 63fe62f + 238c4dd commit 077de66

File tree

6 files changed

+84
-10
lines changed

6 files changed

+84
-10
lines changed

pom.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -397,10 +397,6 @@
397397
<groupId>org.apache.maven.plugins</groupId>
398398
<artifactId>maven-source-plugin</artifactId>
399399
</plugin>
400-
<plugin>
401-
<groupId>org.apache.maven.plugins</groupId>
402-
<artifactId>maven-javadoc-plugin</artifactId>
403-
</plugin>
404400
</plugins>
405401
</build>
406402

@@ -426,10 +422,6 @@
426422
<groupId>org.apache.maven.plugins</groupId>
427423
<artifactId>maven-source-plugin</artifactId>
428424
</plugin>
429-
<plugin>
430-
<groupId>org.apache.maven.plugins</groupId>
431-
<artifactId>maven-javadoc-plugin</artifactId>
432-
</plugin>
433425
</plugins>
434426
</build>
435427
</profile>

src/main/java/com/github/dockerjava/api/command/StartContainerCmd.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public interface StartContainerCmd extends DockerCmd<Void> {
4040

4141
public Device[] getDevices();
4242

43+
public String[] getExtraHosts();
44+
4345
public RestartPolicy getRestartPolicy();
4446

4547
public Capability[] getCapAdd();
@@ -107,6 +109,11 @@ public interface StartContainerCmd extends DockerCmd<Void> {
107109
*/
108110
public StartContainerCmd withDevices(Device... devices);
109111

112+
/**
113+
* Add hostnames to /etc/hosts in the container
114+
*/
115+
public StartContainerCmd withExtraHosts(String... extraHosts);
116+
110117
/**
111118
* Set custom {@link RestartPolicy} for the container. Defaults to
112119
* {@link RestartPolicy#noRestart()}
@@ -141,4 +148,4 @@ public interface StartContainerCmd extends DockerCmd<Void> {
141148
public static interface Exec extends DockerCmdExec<StartContainerCmd, Void> {
142149
}
143150

144-
}
151+
}

src/main/java/com/github/dockerjava/api/model/HostConfig.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,16 @@ public class HostConfig {
5353
@JsonProperty("Devices")
5454
private Device[] devices;
5555

56+
@JsonProperty("ExtraHosts")
57+
private String[] extraHosts;
58+
5659
public HostConfig() {
5760
}
5861

5962
public HostConfig(String[] binds, Links links, LxcConf[] lxcConf, Ports portBindings, boolean publishAllPorts,
6063
boolean privileged, String[] dns, String[] dnsSearch, VolumesFrom[] volumesFrom, String containerIDFile,
61-
Capability[] capAdd, Capability[] capDrop, RestartPolicy restartPolicy, String networkMode, Device[] devices) {
64+
Capability[] capAdd, Capability[] capDrop, RestartPolicy restartPolicy, String networkMode, Device[] devices,
65+
String[] extraHosts) {
6266
this.binds = binds;
6367
this.links = links;
6468
this.lxcConf = lxcConf;
@@ -74,6 +78,7 @@ public HostConfig(String[] binds, Links links, LxcConf[] lxcConf, Ports portBind
7478
this.restartPolicy = restartPolicy;
7579
this.networkMode = networkMode;
7680
this.devices = devices;
81+
this.extraHosts = extraHosts;
7782
}
7883

7984
public String[] getBinds() {
@@ -124,6 +129,10 @@ public Device[] getDevices() {
124129
return devices;
125130
}
126131

132+
public String[] getExtraHosts() {
133+
return extraHosts;
134+
}
135+
127136
public RestartPolicy getRestartPolicy() {
128137
return restartPolicy;
129138
}
@@ -196,6 +205,10 @@ public void setDevices(Device[] devices) {
196205
this.devices = devices;
197206
}
198207

208+
public void setExtraHosts(String[] extraHosts) {
209+
this.extraHosts = extraHosts;
210+
}
211+
199212
@Override
200213
public String toString() {
201214
return ToStringBuilder.reflectionToString(this);

src/main/java/com/github/dockerjava/core/command/StartContainerCmdImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ public class StartContainerCmdImpl extends AbstrDockerCmd<StartContainerCmd, Voi
6565
@JsonProperty("Devices")
6666
private Device[] devices;
6767

68+
@JsonProperty("ExtraHosts")
69+
private String[] extraHosts;
70+
6871
@JsonProperty("RestartPolicy")
6972
private RestartPolicy restartPolicy;
7073

@@ -141,6 +144,11 @@ public Device[] getDevices() {
141144
return devices;
142145
}
143146

147+
@Override
148+
public String[] getExtraHosts() {
149+
return extraHosts;
150+
}
151+
144152
@Override
145153
public RestartPolicy getRestartPolicy() {
146154
return restartPolicy;
@@ -250,6 +258,14 @@ public StartContainerCmd withDevices(Device... devices) {
250258
this.devices = devices;
251259
return this;
252260
}
261+
262+
@Override
263+
public StartContainerCmd withExtraHosts(String... extraHosts) {
264+
checkNotNull(extraHosts, "extraHosts was not specified");
265+
this.extraHosts = extraHosts;
266+
return this;
267+
}
268+
253269

254270
@Override
255271
public StartContainerCmd withRestartPolicy(RestartPolicy restartPolicy) {

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,4 +311,27 @@ public void createContainerWithEntrypoint() throws DockerException {
311311

312312
}
313313

314+
@Test
315+
public void createContainerWithExtraHosts() throws DockerException {
316+
317+
String[] extraHosts = {"dockerhost:127.0.0.1", "otherhost:10.0.0.1"};
318+
319+
HostConfig hostConfig = new HostConfig();
320+
hostConfig.setExtraHosts(extraHosts);
321+
322+
CreateContainerResponse container = dockerClient
323+
.createContainerCmd("busybox").withName("container")
324+
.withHostConfig(hostConfig).exec();
325+
326+
LOG.info("Created container {}", container.toString());
327+
328+
assertThat(container.getId(), not(isEmptyString()));
329+
330+
InspectContainerResponse inspectContainerResponse = dockerClient
331+
.inspectContainerCmd(container.getId()).exec();
332+
333+
assertThat(Arrays.asList(inspectContainerResponse.getHostConfig().getExtraHosts()),
334+
containsInAnyOrder("dockerhost:127.0.0.1", "otherhost:10.0.0.1"));
335+
}
336+
314337
}

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,29 @@ public void startContainerWithDevices() throws DockerException {
437437
"/dev/zero")));
438438
}
439439

440+
@Test
441+
public void startContainerWithExtraHosts() throws DockerException {
442+
443+
CreateContainerResponse container = dockerClient
444+
.createContainerCmd("busybox").withCmd("sleep", "9999").exec();
445+
446+
LOG.info("Created container {}", container.toString());
447+
448+
assertThat(container.getId(), not(isEmptyString()));
449+
450+
dockerClient.startContainerCmd(container.getId())
451+
.withExtraHosts("dockerhost:127.0.0.1")
452+
.exec();
453+
454+
InspectContainerResponse inspectContainerResponse = dockerClient
455+
.inspectContainerCmd(container.getId()).exec();
456+
457+
assertThat(inspectContainerResponse.getState().isRunning(), is(true));
458+
459+
assertThat(Arrays.asList(inspectContainerResponse.getHostConfig()
460+
.getExtraHosts()), contains("dockerhost:127.0.0.1"));
461+
}
462+
440463
@Test
441464
public void startContainerWithRestartPolicy() throws DockerException {
442465

0 commit comments

Comments
 (0)
X Tutup