@patchworkdev/pdk
Version:
Patchwork Development Kit
55 lines (54 loc) • 1.98 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;
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;