var express = require('express'); var app = express(); var router = express.Router(); var upload = require('./app/config/multer.config.js'); const {Docker} = require('node-docker-api'); const docker = new Docker({ socketPath: '/var/run/docker.sock' }); global.__basedir = __dirname; app.use(express.static('resources')); var http = require('http').createServer(app); var io = require('socket.io')(http); var docker_build = (socket, sessionID) => { console.log('[server][start]', sessionID); socket.emit('start') docker.container.create({ Image: 'python:3.8', name: sessionID, Cmd: [ '/bin/bash', '-c', 'ls /output' ], Volumes: { "/output": `./uploads / {sessionID}` }, }) .then(container => container.logs({ follow: true, stdout: true, stderr: true })) .then(stream => { stream.on('data', info => console.log(info)) stream.on('error', err => console.log(err)) }) .catch(error => console.log(error)); }; var clients = 0; io.on('connection', (socket) => { const sessionID = socket.id; console.log('[client][connection]', sessionID); clients = clients + 1; io.sockets.emit('users_count', clients); socket.on('disconnect', () => { clients = clients - 1; console.log('[client][disconnect]', sessionID) io.sockets.emit('users_count', clients); }); socket.on('build', () => { console.log('[client][build]', sessionID); docker_build(socket, sessionID); }); }); require('./app/routers/file.router.js')(app, router, upload); // Create a Server var server = http.listen(8081, () => { var host = server.address().address var port = server.address().port console.log("App listening at http://%s:%s", host, port); })