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) {