UNPKG

@patchworkdev/pdk

Version:

Patchwork Development Kit

55 lines (54 loc) 1.98 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; configPath; constructor(configPath) { this.configPath = 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 projectName = await (0, utils_1.getProjectNameFromConfig)(this.configPath); const ponderContainer = (0, utils_1.getPonderContainerName)(projectName); 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) => { const ports = container.Ports?.[0] ?? {}; status.push({ id: container.Id.substring(0, 12), name: container.Names[0].replace('/', ''), privatePort: ports['PrivatePort'], publicPort: ports['PublicPort'], }); }); return status; } } exports.DockerService = DockerService;