[new] Implement docker create

This commit is contained in:
Wu Han 2020-12-19 18:45:01 +00:00
parent bbfd156a37
commit 5c3cf7e83d
1 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,4 @@
const fs = require('fs');
var express = require('express'); var express = require('express');
var app = express(); var app = express();
var router = express.Router(); var router = express.Router();
@ -17,22 +18,28 @@ var io = require('socket.io')(http);
var docker_build = (socket, sessionID) => { var docker_build = (socket, sessionID) => {
console.log('[server][start]', sessionID); console.log('[server][start]', sessionID);
socket.emit('start') socket.emit('start')
path = process.cwd()
fs.mkdir(path + '/output/' + sessionID.toString(), () => {
socket.emit('update', 'Output directort created.')
})
docker.container.create({ docker.container.create({
Image: 'python:3.8', Image: 'python:3.8',
name: sessionID, Cmd: [ '/bin/bash', '-c', 'cd /tsp && pip install -r requirements.txt && python main.py data/simple/ulysses16.tsp && cp output/* /output' ],
Cmd: [ '/bin/bash', '-c', 'ls /output' ], HostConfig: {
Volumes: { Binds: [
"/output": `./uploads / {sessionID}` path.toString() + '/com2014-template:/tsp',
}, path.toString() + "/output/" + sessionID.toString() + "/output"
]
}
}) })
.then(container => container.start())
.then(container => container.logs({ .then(container => container.logs({
follow: true, follow: true,
stdout: true, stdout: true,
stderr: true stderr: true
})) }))
.then(stream => { .then(stream => {
stream.on('data', info => console.log(info)) stream.on('data', info => socket.emit('update', new Buffer.from(info).toString('ascii')))
stream.on('error', err => console.log(err)) stream.on('error', err => console.log(err))
}) })
.catch(error => console.log(error)); .catch(error => console.log(error));