Merge pull request #156 from kalmanb/withExtraHosts · docker-java/docker-java@077de66 · GitHub
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

6 files changed

Lines changed: 84 additions & 10 deletions

File tree

pom.xml

Lines changed: 0 additions & 8 deletions

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

0 commit comments

Comments
 (0)