Commit d34e3346 authored by nilanjandaw's avatar nilanjandaw

docker container usability added

parent 96eb519a
const isolateBackend = require('./isolate')
const fs = require('fs')
const { spawn } = require('child_process');
const registry_url = "10.129.6.5:5000/"
function runIsolate(filename) {
return new Promise((resolve, reject) => {
......@@ -56,8 +57,25 @@ function runContainer(imageName) {
return new Promise((resolve, reject) => {
let timeStart = Date.now()
const process = spawn('docker', ["run", "--name", imageName, imageName]);
const process_checkImage = spawn('docker', ["inspect", registry_url + imageName])
process_checkImage.on('close', (code) => {
if (code != 0) {
const process_pullImage = spawn('docker', ["pull", registry_url + imageName]);
process_pullImage.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
reject(data);
});
process_pullImage.on('close', (code) => {
if (code != 0)
reject("error")
else {
const process = spawn('docker', ["run", "--name", imageName, registry_url + imageName]);
let result = "";
timeStart = Date.now()
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
let timeDifference = Math.ceil((Date.now() - timeStart))
......@@ -73,6 +91,58 @@ function runContainer(imageName) {
process.on('close', (code) => {
resolve(result);
})
}
})
} else {
const process_checkContainer = spawn('docker', ['container', 'inspect', imageName]);
process_checkContainer.on('close', (code) => {
if (code != 0) {
const process = spawn('docker', ["run", "--name", imageName, registry_url + imageName]);
let result = "";
timeStart = Date.now()
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
let timeDifference = Math.ceil((Date.now() - timeStart))
console.log("container run time taken: ", timeDifference);
result += data;
});
process.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
reject(data);
});
process.on('close', (code) => {
resolve(result);
})
} else {
const process = spawn('docker', ["start", "-a", imageName]);
let result = "";
timeStart = Date.now()
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
let timeDifference = Math.ceil((Date.now() - timeStart))
console.log("container run time taken: ", timeDifference);
result += data;
});
process.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
reject(data);
});
process.on('close', (code) => {
resolve(result);
})
}
})
}
})
})
}
......
......@@ -16,7 +16,7 @@ let db = new Map()
app.use(morgan('combined'))
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
const file_path = __dirname + "/repository"
const file_path = __dirname + "/repository/"
app.use('/repository', express.static(file_path));
app.use(fileUpload())
......@@ -26,7 +26,7 @@ let requestQueue = []
const node_id = "20sez54hq8"
const WINDOW_SIZE = 10
const port = 8080
const registry_url = "10.129.6.5:5000/"
app.post('/serverless/deploy', (req, res) => {
......@@ -42,7 +42,7 @@ app.post('/serverless/deploy', (req, res) => {
}
else {
if (runtime === "container") {
deployContainer('./repository/', functionHash)
deployContainer(file_path, functionHash)
.then(() => {
res.json({
status: "success",
......@@ -85,7 +85,7 @@ function deployContainer(path, imageName) {
}
else {
console.log('Dockerfile created');
const process = spawn('docker', ["build", "-t", imageName, path, "-q"]);
const process = spawn('docker', ["build", "-t", registry_url + imageName, path]);
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
......@@ -100,7 +100,22 @@ function deployContainer(path, imageName) {
console.log(`child process exited with code ${code}`);
let timeDifference = Math.ceil((Date.now() - buildStart))
console.log("image build time taken: ", timeDifference);
const process_push = spawn('docker', ["push", registry_url + imageName]);
process_push.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
process_push.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
process_push.on('close', (code) => {
console.log("image pushed to repository");
resolve();
})
});
}
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment