From d06426e22f325610e90f8ecadac5eb75534a98f2 Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Fri, 17 Jun 2022 11:36:18 +0200 Subject: [PATCH] Clean docker containers on sigINT --- container-pool.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/container-pool.js b/container-pool.js index 15be89f..ee52e8d 100644 --- a/container-pool.js +++ b/container-pool.js @@ -49,6 +49,11 @@ class Container { close() { spawn("docker", ["rm", "-f", this.id]); } + + closeSync() { + spawnSync("docker", ["rm", "-f", this.id]); + console.log("doker rm done", this.id); + } } module.exports = new (class ContainerPool { @@ -58,6 +63,11 @@ module.exports = new (class ContainerPool { for (let i = 1; i <= this.concurrency; i++) { this.generateContainer(); } + + process.on("SIGINT", () => { + console.log("SIGINT"); + this.clear(); + }); } generateContainer() { @@ -72,4 +82,13 @@ module.exports = new (class ContainerPool { this.generateContainer(); return container; } + + clear() { + console.log("Removing all containers from the pool"); + for (const container of this.pool) { + container.closeSync(); + } + console.log("Removing containers done"); + process.exit(0); + } })(concurrency);