const Docker = require('dockerode'); const docker = new Docker({ 'socketPath': '/home/docker.sock' //'socketPath': '/var/run/docker.sock' }); const fs = require("fs"); const DOCKERIMAGE = "mcr.microsoft.com/azure-powershell"; //const cmd = `docker run --net=host -w /myapp -v ${FOLDER}:/myapp mcr.microsoft.com/azure-powershell pwsh appgw.ps1 -ApplicationGatewayName ${appGwName}`; const appgateway = function( mongoJob ) { if ( mongoJob.scenario === 'azqmi-qs-sn' || mongoJob.scenario === 'azqmi-qdc-qs') { var provision_id = mongoJob._id.toString(); var processStream = fs.createWriteStream(mongoJob.logFile, {flags:'a'}); var name = 'qmi-azureps-appgw-'+provision_id; console.log(`AzurePS: will spin up container: ${name}`); return docker.run(DOCKERIMAGE, ['pwsh', 'appgw.ps1', "-ProvisionId", provision_id ], processStream, { "name": name, "WorkingDir": "/myapp", "HostConfig": { "Binds": [ `${mongoJob.path}/shell:/myapp` ], "NetworkMode": "host" } }).then(function(data) { var output = data[0]; var container = data[1]; console.log(`AzurePS: ${name} (${container.id}) has finished with code: ${output.StatusCode}`); return container.remove(); }).then(function() { console.log(`AzurePS: ${name} removed!`); return Promise.resolve(mongoJob); }); } else { return Promise.resolve(mongoJob); } }; module.exports.appgateway = appgateway;