From dccfe7e2e31e4c3c6b18e9d8a53420ab51d8e3ee Mon Sep 17 00:00:00 2001 From: Noan Date: Tue, 23 Aug 2022 18:58:10 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Change=20Docker=20inst?= =?UTF-8?q?ance=20to=20singleton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/docker/DockerSingleton.tsx | 19 +++++++++++++++++++ src/pages/api/docker/container/[id].tsx | 4 ++-- src/pages/api/docker/containers.tsx | 5 ++--- 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 src/pages/api/docker/DockerSingleton.tsx diff --git a/src/pages/api/docker/DockerSingleton.tsx b/src/pages/api/docker/DockerSingleton.tsx new file mode 100644 index 000000000..26c26cc14 --- /dev/null +++ b/src/pages/api/docker/DockerSingleton.tsx @@ -0,0 +1,19 @@ +import Docker from 'dockerode'; + +export default class DockerSingleton extends Docker { + private static dockerInstance: DockerSingleton; + + private constructor() { + super({ + host: '192.168.1.56', + port: 2376, + }); + } + + public static getInstance(): DockerSingleton { + if (!this.dockerInstance) { + this.dockerInstance = new this(); + } + return this.dockerInstance; + } +} diff --git a/src/pages/api/docker/container/[id].tsx b/src/pages/api/docker/container/[id].tsx index c5fdd4d16..1a6fb7602 100644 --- a/src/pages/api/docker/container/[id].tsx +++ b/src/pages/api/docker/container/[id].tsx @@ -1,7 +1,7 @@ import { NextApiRequest, NextApiResponse } from 'next'; -import Docker from 'dockerode'; +import DockerSingleton from '../DockerSingleton'; -const docker = new Docker(); +const docker = DockerSingleton.getInstance(); async function Get(req: NextApiRequest, res: NextApiResponse) { // Get the slug of the request diff --git a/src/pages/api/docker/containers.tsx b/src/pages/api/docker/containers.tsx index 0ec43de0d..2b1fd0dff 100644 --- a/src/pages/api/docker/containers.tsx +++ b/src/pages/api/docker/containers.tsx @@ -1,10 +1,9 @@ import { NextApiRequest, NextApiResponse } from 'next'; - -import Docker from 'dockerode'; +import DockerSingleton from './DockerSingleton'; async function Get(req: NextApiRequest, res: NextApiResponse) { try { - const docker = new Docker(); + const docker = DockerSingleton.getInstance(); const containers = await docker.listContainers({ all: true }); res.status(200).json(containers); } catch (err) { From 8edda19e056cc14639a889ad0d353900d3b57bf7 Mon Sep 17 00:00:00 2001 From: Noan Date: Tue, 23 Aug 2022 19:02:58 +0200 Subject: [PATCH 2/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Change=20Docker=20inst?= =?UTF-8?q?ance=20to=20singleton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/docker/DockerSingleton.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/pages/api/docker/DockerSingleton.tsx b/src/pages/api/docker/DockerSingleton.tsx index 26c26cc14..804444274 100644 --- a/src/pages/api/docker/DockerSingleton.tsx +++ b/src/pages/api/docker/DockerSingleton.tsx @@ -4,16 +4,13 @@ export default class DockerSingleton extends Docker { private static dockerInstance: DockerSingleton; private constructor() { - super({ - host: '192.168.1.56', - port: 2376, - }); + super(); } public static getInstance(): DockerSingleton { - if (!this.dockerInstance) { - this.dockerInstance = new this(); + if (!DockerSingleton.dockerInstance) { + DockerSingleton.dockerInstance = new DockerSingleton(); } - return this.dockerInstance; + return DockerSingleton.dockerInstance; } }