mirror of https://github.com/docker/docs.git
Moved basic Docker operations to namespace.
This commit is contained in:
parent
8955d6bcda
commit
9d5fa7ad69
|
@ -128,7 +128,7 @@
|
||||||
// Packages
|
// Packages
|
||||||
"Fiber": true,
|
"Fiber": true,
|
||||||
"moment": true,
|
"moment": true,
|
||||||
"Docker": true,
|
"Dockerode": true,
|
||||||
"byline": true,
|
"byline": true,
|
||||||
"fs": true,
|
"fs": true,
|
||||||
"zlib": true,
|
"zlib": true,
|
||||||
|
@ -142,6 +142,7 @@
|
||||||
"chokidar": true,
|
"chokidar": true,
|
||||||
"docker": true,
|
"docker": true,
|
||||||
"async": true,
|
"async": true,
|
||||||
|
"child_process": true,
|
||||||
|
|
||||||
// Collections
|
// Collections
|
||||||
"SimpleSchema": false,
|
"SimpleSchema": false,
|
||||||
|
@ -161,6 +162,7 @@
|
||||||
"SetupController": true,
|
"SetupController": true,
|
||||||
|
|
||||||
// Server and Client
|
// Server and Client
|
||||||
|
"Docker": true,
|
||||||
"boot2dockerexec": true,
|
"boot2dockerexec": true,
|
||||||
"getBinDir": true,
|
"getBinDir": true,
|
||||||
"getBoot2DockerIp": true,
|
"getBoot2DockerIp": true,
|
||||||
|
@ -202,16 +204,8 @@
|
||||||
"loadKiteVolumes": true,
|
"loadKiteVolumes": true,
|
||||||
"getAppLogs": true,
|
"getAppLogs": true,
|
||||||
"hasDockerfile": true,
|
"hasDockerfile": true,
|
||||||
"runContainer": true,
|
|
||||||
"runContainerSync": true,
|
|
||||||
"restartContainer": true,
|
|
||||||
"restartContainerSync": true,
|
|
||||||
"createTarFile": true,
|
"createTarFile": true,
|
||||||
"createTarFileSync": true,
|
"createTarFileSync": true,
|
||||||
"getImageData": true,
|
|
||||||
"getImageDataSync": true,
|
|
||||||
"removeImage": true,
|
|
||||||
"removeImageSync": true,
|
|
||||||
"deleteImage": true,
|
"deleteImage": true,
|
||||||
"checkDefaultImages": true,
|
"checkDefaultImages": true,
|
||||||
"resolveDefaultImages": true,
|
"resolveDefaultImages": true,
|
||||||
|
@ -239,11 +233,7 @@
|
||||||
"FormSchema": true,
|
"FormSchema": true,
|
||||||
"showFormSuccess": true,
|
"showFormSuccess": true,
|
||||||
"resetForm": true,
|
"resetForm": true,
|
||||||
"removeContainer": true,
|
|
||||||
"removeContainerSync": true,
|
|
||||||
"deleteAppSync": true,
|
"deleteAppSync": true,
|
||||||
"getContainerData": true,
|
|
||||||
"getContainerDataSync": true,
|
|
||||||
|
|
||||||
// Testing
|
// Testing
|
||||||
"require": false,
|
"require": false,
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
Docker = Meteor.require('dockerode');
|
Dockerode = Meteor.require('dockerode');
|
||||||
|
|
||||||
var Convert = Meteor.require('ansi-to-html');
|
var Convert = Meteor.require('ansi-to-html');
|
||||||
var convert = new Convert();
|
var convert = new Convert();
|
||||||
|
|
||||||
var DOCKER_HOST='192.168.59.103';
|
var DOCKER_HOST='192.168.59.103';
|
||||||
docker = new Docker({host: '192.168.59.103', port: '2375'});
|
docker = new Dockerode({host: '192.168.59.103', port: '2375'});
|
||||||
|
|
||||||
|
Docker = {};
|
||||||
|
|
||||||
hasDockerfile = function (directory) {
|
hasDockerfile = function (directory) {
|
||||||
return fs.existsSync(path.join(directory, 'Dockerfile'));
|
return fs.existsSync(path.join(directory, 'Dockerfile'));
|
||||||
};
|
};
|
||||||
|
|
||||||
removeContainer = function (containerId, callback) {
|
Docker.removeContainer = function (containerId, callback) {
|
||||||
var container = docker.getContainer(containerId);
|
var container = docker.getContainer(containerId);
|
||||||
container.kill(function (err) {
|
container.kill(function (err) {
|
||||||
if (err) { callback(err); return; }
|
if (err) { callback(err); return; }
|
||||||
|
@ -22,8 +24,8 @@ removeContainer = function (containerId, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
removeContainerSync = function (containerId) {
|
Docker.removeContainerSync = function (containerId) {
|
||||||
return Meteor._wrapAsync(removeContainer)(containerId);
|
return Meteor._wrapAsync(Docker.removeContainer)(containerId);
|
||||||
};
|
};
|
||||||
|
|
||||||
deleteApp = function (app, callback) {
|
deleteApp = function (app, callback) {
|
||||||
|
@ -32,7 +34,7 @@ deleteApp = function (app, callback) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
removeContainerSync(app.docker.Id);
|
Docker.removeContainerSync(app.docker.Id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +45,7 @@ deleteAppSync = function (app) {
|
||||||
return Meteor._wrapAsync(deleteApp)(app);
|
return Meteor._wrapAsync(deleteApp)(app);
|
||||||
};
|
};
|
||||||
|
|
||||||
getContainerData = function (containerId, callback) {
|
Docker.getContainerData = function (containerId, callback) {
|
||||||
var container = docker.getContainer(containerId);
|
var container = docker.getContainer(containerId);
|
||||||
container.inspect(function (err, data) {
|
container.inspect(function (err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -59,11 +61,11 @@ getContainerData = function (containerId, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
getContainerDataSync = function (containerId) {
|
Docker.getContainerDataSync = function (containerId) {
|
||||||
return Meteor._wrapAsync(getContainerData)(containerId);
|
return Meteor._wrapAsync(Docker.getContainerData)(containerId);
|
||||||
};
|
};
|
||||||
|
|
||||||
runContainer = function (app, image, callback) {
|
Docker.runContainer = function (app, image, callback) {
|
||||||
var envParam = [];
|
var envParam = [];
|
||||||
_.each(_.keys(app.config), function (key) {
|
_.each(_.keys(app.config), function (key) {
|
||||||
var builtStr = key + '=' + app.config[key];
|
var builtStr = key + '=' + app.config[key];
|
||||||
|
@ -100,11 +102,11 @@ runContainer = function (app, image, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
runContainerSync = function (app, image) {
|
Docker.runContainerSync = function (app, image) {
|
||||||
return Meteor._wrapAsync(runContainer)(app, image);
|
return Meteor._wrapAsync(Docker.runContainer)(app, image);
|
||||||
};
|
};
|
||||||
|
|
||||||
restartContainer = function (containerId, callback) {
|
Docker.restartContainer = function (containerId, callback) {
|
||||||
var container = docker.getContainer(containerId);
|
var container = docker.getContainer(containerId);
|
||||||
container.restart(function (err) {
|
container.restart(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -117,8 +119,8 @@ restartContainer = function (containerId, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
restartContainerSync = function (containerId) {
|
Docker.restartContainerSync = function (containerId) {
|
||||||
return Meteor._wrapAsync(restartContainer)(containerId);
|
return Meteor._wrapAsync(Docker.restartContainer)(containerId);
|
||||||
};
|
};
|
||||||
|
|
||||||
var getFromImage = function (dockerfile) {
|
var getFromImage = function (dockerfile) {
|
||||||
|
@ -135,11 +137,11 @@ var getFromImage = function (dockerfile) {
|
||||||
restartApp = function (app, callback) {
|
restartApp = function (app, callback) {
|
||||||
if (app.docker && app.docker.Id) {
|
if (app.docker && app.docker.Id) {
|
||||||
try {
|
try {
|
||||||
restartContainerSync(app.docker.Id);
|
Docker.restartContainerSync(app.docker.Id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
var containerData = getContainerDataSync(app.docker.Id);
|
var containerData = Docker.getContainerDataSync(app.docker.Id);
|
||||||
Fiber(function () {
|
Fiber(function () {
|
||||||
Apps.update(app._id, {$set: {
|
Apps.update(app._id, {$set: {
|
||||||
status: 'READY',
|
status: 'READY',
|
||||||
|
@ -209,7 +211,7 @@ var convertVolumeObjToArray = function (obj) {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
getImageData = function (imageId, callback) {
|
Docker.getImageData = function (imageId, callback) {
|
||||||
var image = docker.getImage(imageId.toLowerCase());
|
var image = docker.getImage(imageId.toLowerCase());
|
||||||
image.inspect(function (err, data) {
|
image.inspect(function (err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -224,11 +226,11 @@ getImageData = function (imageId, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
getImageDataSync = function (imageId) {
|
Docker.getImageDataSync = function (imageId) {
|
||||||
return Meteor._wrapAsync(getImageData)(imageId);
|
return Meteor._wrapAsync(Docker.getImageData)(imageId);
|
||||||
};
|
};
|
||||||
|
|
||||||
removeImage = function (imageId, callback) {
|
Docker.removeImage = function (imageId, callback) {
|
||||||
var image = docker.getImage(imageId.toLowerCase());
|
var image = docker.getImage(imageId.toLowerCase());
|
||||||
image.remove({force: true}, function (err) {
|
image.remove({force: true}, function (err) {
|
||||||
if (err) { callback(err); return; }
|
if (err) { callback(err); return; }
|
||||||
|
@ -237,8 +239,8 @@ removeImage = function (imageId, callback) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
removeImageSync = function (imageId) {
|
Docker.removeImageSync = function (imageId) {
|
||||||
return Meteor._wrapAsync(removeImage)(imageId);
|
return Meteor._wrapAsync(Docker.removeImage)(imageId);
|
||||||
};
|
};
|
||||||
|
|
||||||
deleteImage = function (image, callback) {
|
deleteImage = function (image, callback) {
|
||||||
|
@ -247,7 +249,7 @@ deleteImage = function (image, callback) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
removeImageSync(image.docker.Id);
|
Docker.removeImageSync(image.docker.Id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
@ -374,7 +376,7 @@ reloadDefaultContainers = function (callback) {
|
||||||
async.until(function () {
|
async.until(function () {
|
||||||
return ready;
|
return ready;
|
||||||
}, function (callback) {
|
}, function (callback) {
|
||||||
docker.listContainers(function (err, containers) {
|
docker.listContainers(function (err) {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
ready = true;
|
ready = true;
|
||||||
}
|
}
|
||||||
|
@ -505,7 +507,7 @@ pullImageFromDockerfile = function (dockerfile, imageId, callback) {
|
||||||
console.log('From image: ' + fromImage);
|
console.log('From image: ' + fromImage);
|
||||||
var installedImage = null;
|
var installedImage = null;
|
||||||
try {
|
try {
|
||||||
installedImage = getImageDataSync(fromImage);
|
installedImage = Docker.getImageDataSync(fromImage);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
@ -593,7 +595,7 @@ buildImage = function (image, callback) {
|
||||||
Fiber(function () {
|
Fiber(function () {
|
||||||
var imageData = null;
|
var imageData = null;
|
||||||
try {
|
try {
|
||||||
imageData = getImageDataSync(image._id);
|
imageData = Docker.getImageDataSync(image._id);
|
||||||
Images.update(image._id, {
|
Images.update(image._id, {
|
||||||
$set: {
|
$set: {
|
||||||
docker: imageData,
|
docker: imageData,
|
||||||
|
@ -614,7 +616,7 @@ buildImage = function (image, callback) {
|
||||||
}
|
}
|
||||||
if (oldImageId && imageData && oldImageId !== imageData.Id) {
|
if (oldImageId && imageData && oldImageId !== imageData.Id) {
|
||||||
try {
|
try {
|
||||||
removeImageSync(oldImageId);
|
Docker.removeImageSync(oldImageId);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
@ -631,11 +633,11 @@ Meteor.methods({
|
||||||
this.unblock();
|
this.unblock();
|
||||||
var image = Images.findOne({_id: app.imageId});
|
var image = Images.findOne({_id: app.imageId});
|
||||||
try {
|
try {
|
||||||
removeContainerSync(app.name);
|
Docker.removeContainerSync(app.name);
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
try {
|
try {
|
||||||
var container = runContainerSync(app, image);
|
var container = Docker.runContainerSync(app, image);
|
||||||
var containerData = getContainerDataSync(container.id);
|
var containerData = Docker.getContainerDataSync(container.id);
|
||||||
Meteor.setTimeout(function () {
|
Meteor.setTimeout(function () {
|
||||||
Apps.update(app._id, {$set: {
|
Apps.update(app._id, {$set: {
|
||||||
docker: containerData,
|
docker: containerData,
|
||||||
|
|
Loading…
Reference in New Issue