summaryrefslogtreecommitdiff
path: root/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala
diff options
context:
space:
mode:
Diffstat (limited to 'crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala')
-rw-r--r--crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala36
1 files changed, 13 insertions, 23 deletions
diff --git a/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala b/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala
index 5abf7ae..1646777 100644
--- a/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala
+++ b/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala
@@ -1,6 +1,7 @@
package io.crashbox.ci
import java.io.{File, OutputStream}
+import java.util.UUID
import scala.collection.JavaConverters._
import scala.concurrent.Future
@@ -12,6 +13,7 @@ import com.spotify.docker.client.DockerClient.{
AttachParameter,
ListContainersParam
}
+import scala.util.Random
import com.spotify.docker.client.LogStream
import com.spotify.docker.client.exceptions.ContainerNotFoundException
import com.spotify.docker.client.messages.{ContainerConfig, HostConfig}
@@ -40,22 +42,7 @@ class DockerExecutor(uri: String = "unix:///run/docker.sock")(
c
}
- /*
- def makeImage() = {
- val returnedImageId = dockerClient.build(
- Paths.get("docker directory"), "test", new ProgressHandler() {
- override def progress(message: ProgressMessage) = {
- val imageId = message.buildImageId()
- message.buildImageId()
- if (imageId != null) {
- //imageIdFromMessage.set(imageId);
- }
- }
- })
- //dockerClient.build
- }*/
-
- def label = "build"
+ private val label = "crashbox-executor" -> UUID.randomUUID().toString
def start(
image: String,
@@ -72,7 +59,7 @@ class DockerExecutor(uri: String = "unix:///run/docker.sock")(
val hostConfig = HostConfig.builder().binds(volume).build()
val containerConfig = ContainerConfig
.builder()
- .labels(Map("crashbox" -> label).asJava)
+ .labels(Map(label).asJava)
.hostConfig(hostConfig)
.tty(true) // combine stdout and stderr into stdout
.image(image)
@@ -126,16 +113,19 @@ class DockerExecutor(uri: String = "unix:///run/docker.sock")(
}
}
- def reapDeadBuilds(): Unit = {
+ def clean(): Boolean = {
val stale = dockerClient
.listContainers(
- ListContainersParam.withLabel("crashbox"),
- ListContainersParam.withStatusExited()
+ ListContainersParam.withLabel(label._1, label._2)
)
.asScala
- stale.foreach { container =>
- log.warning(s"Removing stale container ${container.id}")
- dockerClient.removeContainer(container.id)
+ stale.isEmpty || {
+ stale.foreach { container =>
+ log.warning(s"Removing stale container ${container.id}")
+ dockerClient.killContainer(container.id)
+ dockerClient.removeContainer(container.id)
+ }
+ false
}
}