summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-09-03 17:14:53 +0200
committerValerij Fredriksen <valerijf@oath.com>2018-09-03 17:14:53 +0200
commitecc75d42cbd1f6fe1a1912faee31a661cbb375a2 (patch)
tree99bc083499ed3b87b0be2ac73ddc8082aceefb73 /docker-api
parent3fd3b8181127274adf6cca5d2cffa1009715be5a (diff)
Create method for shared bind mounting
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java9
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java16
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java2
3 files changed, 25 insertions, 2 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java
index 260e2da7c59..d95f7b7b8e1 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java
@@ -107,7 +107,14 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand {
@Override
public Docker.CreateContainerCommand withVolume(String path, String volumePath) {
assert path.indexOf(':') == -1;
- volumeBindSpecs.add(path + ":" + volumePath);
+ volumeBindSpecs.add(path + ":" + volumePath + ":Z");
+ return this;
+ }
+
+ @Override
+ public Docker.CreateContainerCommand withSharedVolume(String path, String volumePath) {
+ assert path.indexOf(':') == -1;
+ volumeBindSpecs.add(path + ":" + volumePath + ":z");
return this;
}
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java
index 91d5125eba3..c67e5d6a4b6 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Docker.java
@@ -19,7 +19,23 @@ public interface Docker {
interface CreateContainerCommand {
CreateContainerCommand withLabel(String name, String value);
CreateContainerCommand withEnvironment(String name, String value);
+
+ /**
+ * Mounts a directory on host inside the docker container.
+ *
+ * <p>Bind mount content will be <b>private</b> to this container (and host) only.
+ *
+ * <p><b>NOTE:</b> If the source directory is meant to be shared between
+ * multiple containers, please use {@link #withSharedVolume} instead.
+ */
CreateContainerCommand withVolume(String path, String volumePath);
+
+ /**
+ * Mounts a directory on host inside the docker container.
+ *
+ * <p>The bind mount content will be <b>shared</b> among multiple containers.
+ */
+ CreateContainerCommand withSharedVolume(String path, String volumePath);
CreateContainerCommand withNetworkMode(String mode);
CreateContainerCommand withIpAddress(InetAddress address);
CreateContainerCommand withUlimit(String name, int softLimit, int hardLimit);
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java
index 0d8701ac43c..5ce8c6b093c 100644
--- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java
+++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java
@@ -46,7 +46,7 @@ public class CreateContainerCommandImplTest {
"--ulimit nproc=10:20 " +
"--env env1=val1 " +
"--env env2=val2 " +
- "--volume vol1:/host/vol1 " +
+ "--volume vol1:/host/vol1:Z " +
"--cap-add SYS_ADMIN " +
"--cap-add SYS_PTRACE " +
"--cap-drop NET_ADMIN " +