summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/libertacasa/pubsh/web/Docker.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/libertacasa/pubsh/web/Docker.java')
-rw-r--r--src/main/java/net/libertacasa/pubsh/web/Docker.java47
1 files changed, 45 insertions, 2 deletions
diff --git a/src/main/java/net/libertacasa/pubsh/web/Docker.java b/src/main/java/net/libertacasa/pubsh/web/Docker.java
index 1460bb3..6912d1b 100644
--- a/src/main/java/net/libertacasa/pubsh/web/Docker.java
+++ b/src/main/java/net/libertacasa/pubsh/web/Docker.java
@@ -1,17 +1,25 @@
package net.libertacasa.pubsh.web;
import java.io.File;
+import java.nio.file.Path;
import java.time.Duration;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
+
+import org.springframework.core.io.ClassPathResource;
+
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.BuildImageResultCallback;
+import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.InspectExecResponse.Container;
import com.github.dockerjava.api.command.ListContainersCmd;
+import com.github.dockerjava.api.command.ListImagesCmd;
+import com.github.dockerjava.api.command.WaitContainerResultCallback;
import com.github.dockerjava.api.model.Image;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientConfig;
@@ -82,8 +90,11 @@ public class Docker {
}
public static String buildImage(String targetUser, String osChoice, Integer count) {
- String dockerfile = "classpath:docker/Dockerfile-" + osChoice;
- String tag = targetUser + ":sh" + count;
+ String dockerfile = "/home/georg/tmp/docker/Dockerfile_" + osChoice;
+ String tag = targetUser + ":sh" + count;
+ if (! new File(dockerfile).exists()) {
+ System.out.printf("\nInvalid Dockerfile: %s\n", dockerfile);
+ }
Set<String> tags = new HashSet<String>();
tags.add(tag);
String imgid = dockerClient.buildImageCmd()
@@ -91,7 +102,39 @@ public class Docker {
.withPull(false).withNoCache(false).withTags(tags)
.exec(new BuildImageResultCallback()).awaitImageId();
+ System.out.printf("\nBuilt image with ID %s", imgid);
return(imgid);
}
+
+ public static void deleteImage(String username, String id) {
+ List<Image> imagequery = Docker.getImages();
+
+ if (imagequery.toString().contains(id)) {
+ System.out.printf("\nFound image ID %s, deleting ...", id);
+ dockerClient.removeImageCmd(id).withImageId(id).exec();
+ }
+ if (! imagequery.toString().contains(id)) {
+ System.out.printf("\nImage ID %s not found.", id);
+ }
+
+ }
+
+ public static String createContainer(String imgid) {
+ //String containerid = dockerClient.createContainerCmd(imgid).exec();
+ WaitContainerResultCallback resultCallback = new WaitContainerResultCallback();
+ CreateContainerResponse createContainerResponse = dockerClient.createContainerCmd(imgid).exec();
+ dockerClient.waitContainerCmd(createContainerResponse.getId()).exec(resultCallback);
+ try {
+ resultCallback.awaitCompletion();
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ String containerid = createContainerResponse.getId();
+ //System.out.println(dockerClient.infoCmd().exec());
+
+ System.out.printf("\nCreated container with ID %s from image ID %s", containerid, imgid);
+ return(containerid);
+ }
}