mirror of https://github.com/docker/docs.git
Changing sync to only sync containers that have ports exposed
This commit is contained in:
parent
ffaa2bc565
commit
1a956a6504
|
@ -66,10 +66,9 @@ AppUtil.stop = function (appId) {
|
||||||
|
|
||||||
AppUtil.remove = function (appId) {
|
AppUtil.remove = function (appId) {
|
||||||
var app = Apps.findOne(appId);
|
var app = Apps.findOne(appId);
|
||||||
Apps.remove({_id: appId});
|
|
||||||
if (app.docker) {
|
if (app.docker) {
|
||||||
Docker.removeContainer(app.docker.Id, function (err) {
|
Docker.removeContainer(app.docker.Id, function (err) {
|
||||||
if (err) { console.error(err); }
|
Apps.remove({_id: appId});
|
||||||
var appPath = path.join(Util.KITE_PATH, app.name);
|
var appPath = path.join(Util.KITE_PATH, app.name);
|
||||||
Util.deleteFolder(appPath);
|
Util.deleteFolder(appPath);
|
||||||
});
|
});
|
||||||
|
@ -82,7 +81,11 @@ AppUtil.configVar = function (appId, configVars) {
|
||||||
status: 'STARTING'
|
status: 'STARTING'
|
||||||
}});
|
}});
|
||||||
var app = Apps.findOne({_id: appId});
|
var app = Apps.findOne({_id: appId});
|
||||||
AppUtil.run(app);
|
AppUtil.run(Apps.findOne(appId), function (err) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
AppUtil.logs = function (appId) {
|
AppUtil.logs = function (appId) {
|
||||||
|
@ -137,7 +140,7 @@ AppUtil.sync = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var apps = Apps.find({}).fetch();
|
var apps = Apps.find({}).fetch();
|
||||||
var dockerIds = _.map(apps, function (app) {
|
var guiIds = _.map(apps, function (app) {
|
||||||
if (app.docker && app.docker.Id) {
|
if (app.docker && app.docker.Id) {
|
||||||
return app.docker.Id;
|
return app.docker.Id;
|
||||||
}
|
}
|
||||||
|
@ -145,7 +148,7 @@ AppUtil.sync = function (callback) {
|
||||||
var containerIds = _.map(containers, function (container) {
|
var containerIds = _.map(containers, function (container) {
|
||||||
return container.Id;
|
return container.Id;
|
||||||
});
|
});
|
||||||
var diffApps = _.difference(dockerIds, containerIds);
|
var diffApps = _.difference(guiIds, containerIds);
|
||||||
_.each(diffApps, function (appContainerId) {
|
_.each(diffApps, function (appContainerId) {
|
||||||
var app = Apps.findOne({'docker.Id': appContainerId});
|
var app = Apps.findOne({'docker.Id': appContainerId});
|
||||||
if (app && app.status !== 'STARTING') {
|
if (app && app.status !== 'STARTING') {
|
||||||
|
@ -153,54 +156,61 @@ AppUtil.sync = function (callback) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var diffContainers = _.reject(containers, function (container) {
|
var diffContainers = _.reject(containers, function (container) {
|
||||||
return _.contains(dockerIds, container.Id);
|
return _.contains(guiIds, container.Id);
|
||||||
});
|
});
|
||||||
_.each(diffContainers, function (container) {
|
_.each(diffContainers, function (container) {
|
||||||
var appName = container.Name.substring(1);
|
var appName = container.Name.substring(1);
|
||||||
var startingApp = _.find(apps, function (app) {
|
var startingApp = _.find(apps, function (app) {
|
||||||
return app.status === 'STARTING' && app.name === appName;
|
return app.status === 'STARTING' && app.name === appName;
|
||||||
});
|
});
|
||||||
if (!startingApp && appName !== 'kite-dns') {
|
|
||||||
var appPath = path.join(Util.KITE_PATH, appName);
|
|
||||||
if (!fs.existsSync(appPath)) {
|
|
||||||
console.log('Created Kite ' + appName + ' directory.');
|
|
||||||
fs.mkdirSync(appPath, function (err) {
|
|
||||||
if (err) { throw err; }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
var envVars = container.Config.Env;
|
|
||||||
var config = {};
|
|
||||||
_.each(envVars, function (envVar) {
|
|
||||||
var eqPos = envVar.indexOf('=');
|
|
||||||
var envKey = envVar.substring(0, eqPos);
|
|
||||||
var envVal = envVar.substring(eqPos + 1);
|
|
||||||
config[envKey] = envVal;
|
|
||||||
});
|
|
||||||
var status = 'STARTING';
|
|
||||||
if (container.State.Running) {
|
|
||||||
status = 'READY';
|
|
||||||
} else {
|
|
||||||
status = 'ERROR';
|
|
||||||
}
|
|
||||||
|
|
||||||
var appObj = {
|
if (startingApp || _.isEmpty(container.NetworkSettings.Ports)) {
|
||||||
name: appName,
|
return;
|
||||||
docker: container,
|
|
||||||
status: status,
|
|
||||||
config: config,
|
|
||||||
path: appPath,
|
|
||||||
logs: [],
|
|
||||||
createdAt: new Date(),
|
|
||||||
imageId: Images.findOne({'docker.Id': container.Image})._id
|
|
||||||
};
|
|
||||||
if (container.HostConfig.Binds && container.HostConfig.Binds.length) {
|
|
||||||
appObj.volumesEnabled = true;
|
|
||||||
} else {
|
|
||||||
appObj.volumesEnabled = false;
|
|
||||||
}
|
|
||||||
console.log(appObj);
|
|
||||||
Apps.insert(appObj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var appPath = path.join(Util.KITE_PATH, appName);
|
||||||
|
if (!fs.existsSync(appPath)) {
|
||||||
|
console.log('Created Kite ' + appName + ' directory.');
|
||||||
|
fs.mkdirSync(appPath, function (err) {
|
||||||
|
if (err) { throw err; }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var envVars = container.Config.Env;
|
||||||
|
var config = {};
|
||||||
|
_.each(envVars, function (envVar) {
|
||||||
|
var eqPos = envVar.indexOf('=');
|
||||||
|
var envKey = envVar.substring(0, eqPos);
|
||||||
|
var envVal = envVar.substring(eqPos + 1);
|
||||||
|
config[envKey] = envVal;
|
||||||
|
});
|
||||||
|
var status = 'STARTING';
|
||||||
|
if (container.State.Running) {
|
||||||
|
status = 'READY';
|
||||||
|
} else {
|
||||||
|
status = 'ERROR';
|
||||||
|
}
|
||||||
|
|
||||||
|
var appObj = {
|
||||||
|
name: appName,
|
||||||
|
docker: container,
|
||||||
|
status: status,
|
||||||
|
config: config,
|
||||||
|
path: appPath,
|
||||||
|
logs: [],
|
||||||
|
createdAt: new Date()
|
||||||
|
};
|
||||||
|
|
||||||
|
var image = Images.findOne({'docker.Id': container.Image});
|
||||||
|
if (image) {
|
||||||
|
appObj.imageId = image._id;
|
||||||
|
}
|
||||||
|
if (container.HostConfig.Binds && container.HostConfig.Binds.length) {
|
||||||
|
appObj.volumesEnabled = true;
|
||||||
|
} else {
|
||||||
|
appObj.volumesEnabled = false;
|
||||||
|
}
|
||||||
|
console.log(appObj);
|
||||||
|
Apps.insert(appObj);
|
||||||
});
|
});
|
||||||
|
|
||||||
async.each(apps, function (app, callback) {
|
async.each(apps, function (app, callback) {
|
||||||
|
|
|
@ -181,37 +181,24 @@ var convertVolumeObjToArray = function (obj) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Docker.getImageData = function (imageId, callback) {
|
Docker.getImageData = function (imageId, callback) {
|
||||||
Docker.client().listImages({all: false}, function (err, images) {
|
var image = Docker.client().getImage(imageId);
|
||||||
|
image.inspect(function (err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err, null);
|
callback(err, null);
|
||||||
} else {
|
return;
|
||||||
var dockerImage = _.find(images, function (image) {
|
|
||||||
return image.Id === imageId;
|
|
||||||
});
|
|
||||||
var image = Docker.client().getImage(imageId);
|
|
||||||
image.inspect(function (err, data) {
|
|
||||||
if (err) {
|
|
||||||
callback(err, null);
|
|
||||||
} else {
|
|
||||||
if (data.Config && data.Config.Volumes) {
|
|
||||||
data.Config.Volumes = convertVolumeObjToArray(data.Config.Volumes);
|
|
||||||
}
|
|
||||||
if (data.ContainerConfig && data.ContainerConfig.Volumes) {
|
|
||||||
data.ContainerConfig.Volumes = convertVolumeObjToArray(data.ContainerConfig.Volumes);
|
|
||||||
}
|
|
||||||
if (!dockerImage) {
|
|
||||||
callback(null, data);
|
|
||||||
} else {
|
|
||||||
callback(null, _.extend(dockerImage, data));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
if (data.Config && data.Config.Volumes) {
|
||||||
|
data.Config.Volumes = convertVolumeObjToArray(data.Config.Volumes);
|
||||||
|
}
|
||||||
|
if (data.ContainerConfig && data.ContainerConfig.Volumes) {
|
||||||
|
data.ContainerConfig.Volumes = convertVolumeObjToArray(data.ContainerConfig.Volumes);
|
||||||
|
}
|
||||||
|
callback(null, data);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Docker.listImages = function (callback) {
|
Docker.listImages = function (opts, callback) {
|
||||||
Docker.client().listImages({all: false}, function (err, images) {
|
Docker.client().listImages(opts, function (err, images) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err, null);
|
callback(err, null);
|
||||||
} else {
|
} else {
|
||||||
|
@ -221,7 +208,7 @@ Docker.listImages = function (callback) {
|
||||||
if (err) {
|
if (err) {
|
||||||
cb(err, null);
|
cb(err, null);
|
||||||
} else {
|
} else {
|
||||||
cb(null, data);
|
cb(null, _.extend(image, data));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -171,7 +171,7 @@ ImageUtil.build = function (image, callback) {
|
||||||
buildLogs: []
|
buildLogs: []
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Docker.client().buildImage(tarFilePath, {t: image.meta.name + ':' + image.meta.version}, function (err, response) {
|
Docker.client().buildImage(tarFilePath, {forcerm: true, t: image.meta.name + ':' + image.meta.version}, function (err, response) {
|
||||||
if (err) { callback(err); return; }
|
if (err) { callback(err); return; }
|
||||||
console.log('Building Docker image...');
|
console.log('Building Docker image...');
|
||||||
response.setEncoding('utf8');
|
response.setEncoding('utf8');
|
||||||
|
@ -240,7 +240,7 @@ ImageUtil.remove = function (imageId) {
|
||||||
};
|
};
|
||||||
|
|
||||||
ImageUtil.sync = function (callback) {
|
ImageUtil.sync = function (callback) {
|
||||||
Docker.listImages(function (err, dockerImages) {
|
Docker.listImages({all: 0}, function (err, dockerImages) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
return;
|
return;
|
||||||
|
@ -269,24 +269,30 @@ ImageUtil.sync = function (callback) {
|
||||||
return _.contains(kitematicIds, image.Id);
|
return _.contains(kitematicIds, image.Id);
|
||||||
});
|
});
|
||||||
_.each(diffDockerImages, function (image) {
|
_.each(diffDockerImages, function (image) {
|
||||||
|
if (!image.RepoTags || _.isEmpty(image.Config.ExposedPorts)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var meta = {};
|
||||||
var repoTag = _.first(image.RepoTags);
|
var repoTag = _.first(image.RepoTags);
|
||||||
var repoTagTokens = repoTag.split(':');
|
var repoTagTokens = repoTag.split(':');
|
||||||
var name = repoTagTokens[0];
|
var name = repoTagTokens[0];
|
||||||
var version = repoTagTokens[1];
|
var version = repoTagTokens[1];
|
||||||
|
meta = {
|
||||||
|
name: name,
|
||||||
|
version: version
|
||||||
|
};
|
||||||
var buildingImage = _.find(images, function (image) {
|
var buildingImage = _.find(images, function (image) {
|
||||||
return image.status === 'BUILDING' && image.meta.name === name && image.meta.version === version;
|
return image.status === 'BUILDING' && image.meta.name === name && image.meta.version === version;
|
||||||
});
|
});
|
||||||
if (!buildingImage && name !== '<none>' && version !== '<none>' && name !== 'kite-dns') {
|
if (!buildingImage) {
|
||||||
var imageObj = {
|
var imageObj = {
|
||||||
status: 'READY',
|
status: 'READY',
|
||||||
docker: image,
|
docker: image,
|
||||||
buildLogs: [],
|
buildLogs: [],
|
||||||
createdAt: new Date(),
|
createdAt: new Date(),
|
||||||
tags: image.RepoTags,
|
tags: image.RepoTags,
|
||||||
meta: {
|
meta: meta
|
||||||
name: name,
|
|
||||||
version: version
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
Images.insert(imageObj);
|
Images.insert(imageObj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,7 @@ Router.map(function () {
|
||||||
if (!settings) {
|
if (!settings) {
|
||||||
Settings.insert({tracking: true});
|
Settings.insert({tracking: true});
|
||||||
}
|
}
|
||||||
console.log('Starting boot2docker utilization monitor...');
|
|
||||||
startUpdatingBoot2DockerUtilization();
|
startUpdatingBoot2DockerUtilization();
|
||||||
|
|
||||||
console.log('Starting CLI sync...');
|
|
||||||
startSyncingAppState();
|
startSyncingAppState();
|
||||||
Router.go('dashboard_apps');
|
Router.go('dashboard_apps');
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,11 +101,16 @@ startUpdatingBoot2DockerUtilization = function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
startSyncingAppState = function () {
|
startSyncingAppState = function () {
|
||||||
ImageUtil.sync(function (err) {
|
try {
|
||||||
if (err) {console.log(err);}
|
ImageUtil.sync(function (err) {
|
||||||
AppUtil.sync(function (err) {
|
if (err) {throw err;}
|
||||||
if (err) {console.log(err);}
|
AppUtil.sync(function (err) {
|
||||||
Meteor.setTimeout(startSyncingAppState, 2000);
|
if (err) {throw err;}
|
||||||
|
Meteor.setTimeout(startSyncingAppState, 2000);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
Meteor.setTimeout(startSyncingAppState, 2000);
|
||||||
|
}
|
||||||
};
|
};
|
|
@ -14,7 +14,9 @@
|
||||||
{{#if hasItem images}}
|
{{#if hasItem images}}
|
||||||
<div class="images line-item-collection">
|
<div class="images line-item-collection">
|
||||||
{{#each images}}
|
{{#each images}}
|
||||||
{{> dashboardSingleImage}}
|
{{#if this.tags}}
|
||||||
|
{{> dashboardSingleImage}}
|
||||||
|
{{/if}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
Loading…
Reference in New Issue