mirror of https://github.com/docker/docs.git
Refactored app code into hooks.
This commit is contained in:
parent
e59c03d620
commit
eb46a9dee4
|
@ -201,7 +201,7 @@
|
||||||
"restartApp": true,
|
"restartApp": true,
|
||||||
"deleteApp": true,
|
"deleteApp": true,
|
||||||
"deleteFolder": true,
|
"deleteFolder": true,
|
||||||
"loadKiteVolumes": true,
|
"copyVolumes": true,
|
||||||
"getAppLogs": true,
|
"getAppLogs": true,
|
||||||
"hasDockerfile": true,
|
"hasDockerfile": true,
|
||||||
"createTarFile": true,
|
"createTarFile": true,
|
||||||
|
|
|
@ -117,6 +117,29 @@ Apps.helpers({
|
||||||
|
|
||||||
Apps.attachSchema(schemaApps);
|
Apps.attachSchema(schemaApps);
|
||||||
|
|
||||||
|
Apps.after.insert(function (userId, app) {
|
||||||
|
// Give app an unique environment variable
|
||||||
|
var appId = this._id;
|
||||||
|
Apps.update(appId, {
|
||||||
|
$set: {
|
||||||
|
'config.APP_ID': appId
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var image = Images.findOne(app.imageId);
|
||||||
|
copyVolumes(image.path, app.name);
|
||||||
|
app = Apps.findOne(appId);
|
||||||
|
removeBindFolder(app.name, function (err) {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
Fiber(function () {
|
||||||
|
Meteor.call('runApp', app, function (err) {
|
||||||
|
if (err) { throw err; }
|
||||||
|
});
|
||||||
|
}).run();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
Apps.after.remove(function (userId, app) {
|
Apps.after.remove(function (userId, app) {
|
||||||
deleteApp(app, function (err) {
|
deleteApp(app, function (err) {
|
||||||
if (err) { console.error(err); }
|
if (err) { console.error(err); }
|
||||||
|
|
|
@ -58,39 +58,22 @@ Meteor.methods({
|
||||||
throw new Meteor.Error(400, 'Validation Failed.', validationResult.errors);
|
throw new Meteor.Error(400, 'Validation Failed.', validationResult.errors);
|
||||||
} else {
|
} else {
|
||||||
var cleaned = validationResult.cleaned;
|
var cleaned = validationResult.cleaned;
|
||||||
var appObj = {
|
var appName = cleaned.name;
|
||||||
name: cleaned.name,
|
var appPath = path.join(KITE_PATH, appName);
|
||||||
imageId: cleaned.imageId,
|
|
||||||
status: 'STARTING',
|
|
||||||
config: {}
|
|
||||||
};
|
|
||||||
var appId = Apps.insert(appObj);
|
|
||||||
var appPath = path.join(KITE_PATH, appObj.name);
|
|
||||||
if (!fs.existsSync(appPath)) {
|
if (!fs.existsSync(appPath)) {
|
||||||
console.log('Created Kite ' + appObj.name + ' directory.');
|
console.log('Created Kite ' + appName + ' directory.');
|
||||||
fs.mkdirSync(appPath, function (err) {
|
fs.mkdirSync(appPath, function (err) {
|
||||||
if (err) { throw err; }
|
if (err) { throw err; }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Apps.update(appId, {
|
var appObj = {
|
||||||
$set: {
|
name: appName,
|
||||||
'config.APP_ID': appId,
|
imageId: cleaned.imageId,
|
||||||
path: appPath
|
status: 'STARTING',
|
||||||
}
|
config: {},
|
||||||
});
|
path: appPath
|
||||||
var image = Images.findOne(appObj.imageId);
|
};
|
||||||
loadKiteVolumes(image.path, appObj.name);
|
Apps.insert(appObj);
|
||||||
var app = Apps.findOne(appId);
|
|
||||||
removeBindFolder(app.name, function (err) {
|
|
||||||
if (err) {
|
|
||||||
console.error(err);
|
|
||||||
}
|
|
||||||
Fiber(function () {
|
|
||||||
Meteor.call('runApp', app, function (err) {
|
|
||||||
if (err) { throw err; }
|
|
||||||
});
|
|
||||||
}).run();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getAppLogs: function (appId) {
|
getAppLogs: function (appId) {
|
||||||
|
|
|
@ -62,7 +62,7 @@ getImageJSON = function (directory) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
loadKiteVolumes = function (directory, appName) {
|
copyVolumes = function (directory, appName) {
|
||||||
var KITE_VOLUMES_PATH = path.join(directory, 'volumes');
|
var KITE_VOLUMES_PATH = path.join(directory, 'volumes');
|
||||||
if (fs.existsSync(KITE_VOLUMES_PATH)) {
|
if (fs.existsSync(KITE_VOLUMES_PATH)) {
|
||||||
var destinationPath = path.join(KITE_PATH, appName);
|
var destinationPath = path.join(KITE_PATH, appName);
|
||||||
|
|
Loading…
Reference in New Issue