diff options
4 files changed, 30 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 " + diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java index 9b9bb2af26c..4b4ef05593d 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java @@ -167,6 +167,11 @@ public class DockerMock implements Docker { } @Override + public CreateContainerCommand withSharedVolume(String path, String volumePath) { + return this; + } + + @Override public CreateContainerCommand withNetworkMode(String mode) { return this; } |