UNPKG

@patchworkdev/pdk

Version:

Patchwork Development Kit

51 lines (50 loc) 1.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DockerService = void 0; const dockerode_1 = __importDefault(require("dockerode")); const path_1 = __importDefault(require("path")); const utils_1 = require("../utils"); const docker = new dockerode_1.default(); class DockerService { targetDir; constructor(configPath) { this.targetDir = path_1.default.dirname(configPath); } async startServices() { console.info('Starting Docker services...'); const { execa } = await import('execa'); await execa('docker', ['compose', 'up', '-d'], { cwd: this.targetDir, }); } async restartPonderContainer() { const { execa } = await import('execa'); const ponderContainer = (0, utils_1.getPonderContainerName)(this.targetDir); console.log(`Restarting Ponder container: ${ponderContainer}`); await execa('docker', ['container', 'restart', ponderContainer], { cwd: this.targetDir, }); } async getContainerStatus(prefix) { const status = []; const containers = await docker.listContainers({ filters: { name: [prefix ?? ''], }, all: true, }); containers.map((container) => { status.push({ id: container.Id.substring(0, 12), name: container.Names[0].replace('/', ''), privatePort: container.Ports[0] ? container.Ports[0]['PrivatePort'] : 0, publicPort: container.Ports[0] ? container.Ports[0]['PublicPort'] : 0, }); }); return status; } } exports.DockerService = DockerService;