diff --git a/src/pages/api/docker/DockerSingleton.tsx b/src/pages/api/docker/DockerSingleton.tsx new file mode 100644 index 000000000..804444274 --- /dev/null +++ b/src/pages/api/docker/DockerSingleton.tsx @@ -0,0 +1,16 @@ +import Docker from 'dockerode'; + +export default class DockerSingleton extends Docker { + private static dockerInstance: DockerSingleton; + + private constructor() { + super(); + } + + public static getInstance(): DockerSingleton { + if (!DockerSingleton.dockerInstance) { + DockerSingleton.dockerInstance = new DockerSingleton(); + } + return DockerSingleton.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) {