首页 > 解决方案 > 从 node.js 中的 docker 容器备份 MongoDB 数据库

问题描述

我的 docker 容器在端口 27018 上运行。当我从终端运行以下命令时,它工作正常 -

docker exec mongodb mongodump -u=Abhishek -p=abhishek --authenticationDatabase=testdb

但是,当我从 node.js 运行相同的命令时,它不起作用。请查看我的以下代码并帮助我调试

import { spawn } from 'child_process';

const backupProcess = spawn('sudo docker exec mongodb mongodump', [
      `-u=Abhishek`,
      `-p=abhishek`,
      `--authenticationDatabase=testdb`
    ]);

    backupProcess.on('error', (err) => {
      console.log('Error :: ', err);
    });

    backupProcess.on('exit', (code, signal) => {
      if (code) {
        console.log(MessageType.warn, '\n Backup process exited with code ', code);
      } else if (signal) {
        console.log(MessageType.error, '\n Backup process was killed with signal ', signal);
      } else {
        console.log(MessageType.success, '\n Successfully backed-up the database ✅ ');
      }
    });

它给了我以下错误-

Error ::  Error: spawn sudo docker exec mongodb mongodump ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:268:19)
    at onErrorNT (internal/child_process.js:470:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'spawn sudo docker exec mongodb mongodump',
  path: 'sudo docker exec mongodb mongodump',
  spawnargs: [
    '-u=Abhishek',
    '-p=abhishek',
    '--authenticationDatabase=testdb'
  ]
}

标签: node.jsmongodbdocker

解决方案


推荐阅读