@patchworkdev/pdk
Version:
Patchwork Development Kit
51 lines (50 loc) • 1.86 kB
JavaScript
;
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;