UNPKG

mongodoki

Version:

A tool to on-the-fly run MongoDB as a Docker Container, data restoring included

115 lines 4.94 kB
#!/usr/bin/env node "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const doki = __importStar(require("./index")); const ora = require('ora'); commander_1.program.version(require('../package.json').version).description('Run and manage MongoDB as a Docker Container.'); commander_1.program .command('start') .description('Run MongoDb as Docker container') .option('-t, --tag <tag>', 'Tag of the MongoDB Docker Image to instantiate (default: latest)', 'latest') .option('-n, --name <name>', 'Set a name to the container (default: mongodoki)', 'mongodoki') .option('-p, --port <port>', 'Assign host (localhost) port at which MongoDB instance will be available (default: 27017)', '27017') .option('-r, --reuse', 'reuse a container, if exists') .option('-d, --dbname <db>', 'Database name to create (default: testDB)', 'testDB') .option('-D, --dbdata <path>', 'Persist DB on the local host. Specify the absolute path on the local host machine to use as persistent DB, directory must be included in Docker File Sharing preferences') .option('-i, --import <path>', 'Import DB data from specified (absolute) path directory. Data files must be produced by mongodump tool') .option('-T, --timeout <ms>', 'Set the amount of time to wait for the container (in milliseconds)', '60000') .action((program) => { const opts = program.opts(); console.log('\nRunning mongodoki. Could take some time, please wait... '); console.log(`Creating a container from Docker image mongo:${opts.tag ? opts.tag : 'latest'}, configuration is:\n`); const config = { tag: opts.tag, containerName: opts.name, hostPort: +opts.port, reuse: opts.reuse || false, }; console.log(' - container name:', opts.name); console.log(' - container/db local port:', opts.port); console.log(' - reuse:', opts.reuse || false); console.log(' - database name:', opts.dbname); if (opts.dbdata) { console.log(' - database data local path:', opts.dbdata); config['volume'] = { hostDir: opts.dbdata, containerDir: '/data/db', }; } if (opts.import) { console.log(' - restore data from:', opts.import); } console.log(' - timeout:', opts.timeout); console.log(''); const spinner = ora({ spinner: 'bouncingBar', text: 'Creating Container...', }).start(); const mongodoki = new doki.MongoDoki(config); mongodoki .getDB(opts.dbname, +opts.timeout, opts.import) .then(() => { spinner.succeed('Container started'); console.log(''); process.exit(0); }) .catch((err) => { spinner.fail('Unable to start the container'); console.log(err); process.exit(1); }); }); commander_1.program .command('stop <container>') .description('Stop and remove an existing container') .usage('<container>') .action((container) => { console.log(''); const spinner = ora({ spinner: 'bouncingBar', text: `Stopping ${container} Container...`, }).start(); const mongodoki = new doki.MongoDoki({ tag: 'latest', containerName: container, hostPort: 27017, reuse: false }); mongodoki .getDB() .then(() => mongodoki.stopAndRemove()) .then(() => { spinner.succeed('Container stopped'); console.log(''); process.exit(0); }) .catch((err) => { spinner.fail('ERROR stopping container. Try using: docker stop <container.name> command.'); process.exit(1); }); }); commander_1.program.parse(process.argv); if (!(process.argv.length >= 3 && ['start', 'stop'].includes(process.argv[2]))) { console.log('\nNo command specified. Run: mongodoki --help'); } console.log('\n'); //# sourceMappingURL=bin.js.map