mirror of https://github.com/docker/docs.git
commit
643d705d2d
|
@ -97,8 +97,7 @@ var ContainerDetailsSubheader = React.createClass({
|
||||||
handleRestart: function () {
|
handleRestart: function () {
|
||||||
if (!this.disableRestart()) {
|
if (!this.disableRestart()) {
|
||||||
metrics.track('Restarted Container');
|
metrics.track('Restarted Container');
|
||||||
ContainerStore.restart(this.props.container.Name, function (err) {
|
ContainerStore.restart(this.props.container.Name, function () {
|
||||||
console.log(err);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,8 +6,9 @@ var assign = require('object-assign');
|
||||||
var docker = require('./Docker');
|
var docker = require('./Docker');
|
||||||
var metrics = require('./Metrics');
|
var metrics = require('./Metrics');
|
||||||
var registry = require('./Registry');
|
var registry = require('./Registry');
|
||||||
var LogStore = require('./LogStore');
|
var logstore = require('./LogStore');
|
||||||
var bugsnag = require('bugsnag-js');
|
var bugsnag = require('bugsnag-js');
|
||||||
|
var util = require('./Util');
|
||||||
|
|
||||||
var _placeholders = {};
|
var _placeholders = {};
|
||||||
var _containers = {};
|
var _containers = {};
|
||||||
|
@ -89,6 +90,42 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
_startContainer: function (name, containerData, callback) {
|
||||||
|
var self = this;
|
||||||
|
docker.client().getImage(containerData.Image).inspect(function (err, data) {
|
||||||
|
if (err) {
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var binds = containerData.Binds || [];
|
||||||
|
if (data.Config.Volumes) {
|
||||||
|
_.each(data.Config.Volumes, function (value, key) {
|
||||||
|
var existingBind = _.find(binds, b => {
|
||||||
|
return b.indexOf(':' + key) !== -1;
|
||||||
|
});
|
||||||
|
if (!existingBind) {
|
||||||
|
binds.push(path.join(util.home(), 'Kitematic', name, key)+ ':' + key);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var startopts = {
|
||||||
|
Binds: binds
|
||||||
|
};
|
||||||
|
if (containerData.NetworkSettings && containerData.NetworkSettings.Ports) {
|
||||||
|
startopts.PortBindings = containerData.NetworkSettings.Ports;
|
||||||
|
} else{
|
||||||
|
startopts.PublishAllPorts = true;
|
||||||
|
}
|
||||||
|
var container = docker.client().getContainer(name);
|
||||||
|
container.start(startopts, function (err) {
|
||||||
|
if (err) {
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.fetchContainer(name, callback);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
_createContainer: function (name, containerData, callback) {
|
_createContainer: function (name, containerData, callback) {
|
||||||
var existing = docker.client().getContainer(name);
|
var existing = docker.client().getContainer(name);
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -102,23 +139,7 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
|
||||||
}
|
}
|
||||||
existing.kill(function () {
|
existing.kill(function () {
|
||||||
existing.remove(function () {
|
existing.remove(function () {
|
||||||
docker.client().getImage(containerData.Image).inspect(function (err, data) {
|
docker.client().createContainer(containerData, function (err) {
|
||||||
if (err) {
|
|
||||||
callback(err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var binds = containerData.Binds || [];
|
|
||||||
if (data.Config.Volumes) {
|
|
||||||
_.each(data.Config.Volumes, function (value, key) {
|
|
||||||
var existingBind = _.find(binds, b => {
|
|
||||||
return b.indexOf(':' + key) !== -1;
|
|
||||||
});
|
|
||||||
if (!existingBind) {
|
|
||||||
binds.push(path.join(process.env.HOME, 'Kitematic', containerData.name, key)+ ':' + key);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
docker.client().createContainer(containerData, function (err, container) {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err, null);
|
callback(err, null);
|
||||||
return;
|
return;
|
||||||
|
@ -126,23 +147,8 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
|
||||||
if (containerData.State && !containerData.State.Running) {
|
if (containerData.State && !containerData.State.Running) {
|
||||||
self.fetchContainer(containerData.name, callback);
|
self.fetchContainer(containerData.name, callback);
|
||||||
} else {
|
} else {
|
||||||
var startopts = {
|
self._startContainer(name, containerData, callback);
|
||||||
Binds: binds
|
|
||||||
};
|
|
||||||
if (containerData.NetworkSettings && containerData.NetworkSettings.Ports) {
|
|
||||||
startopts.PortBindings = containerData.NetworkSettings.Ports;
|
|
||||||
} else{
|
|
||||||
startopts.PublishAllPorts = true;
|
|
||||||
}
|
}
|
||||||
container.start(startopts, function (err) {
|
|
||||||
if (err) {
|
|
||||||
callback(err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
self.fetchContainer(containerData.name, callback);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -361,7 +367,7 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
|
||||||
data.name = data.Name;
|
data.name = data.Name;
|
||||||
}
|
}
|
||||||
if (name !== data.name) {
|
if (name !== data.name) {
|
||||||
LogStore.rename(name, data.name);
|
logstore.rename(name, data.name);
|
||||||
}
|
}
|
||||||
var fullData = assign(_containers[name], data);
|
var fullData = assign(_containers[name], data);
|
||||||
this._createContainer(name, fullData, function () {
|
this._createContainer(name, fullData, function () {
|
||||||
|
@ -371,7 +377,7 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
rename: function (name, newName, callback) {
|
rename: function (name, newName, callback) {
|
||||||
LogStore.rename(name, newName);
|
logstore.rename(name, newName);
|
||||||
docker.client().getContainer(name).rename({name: newName}, err => {
|
docker.client().getContainer(name).rename({name: newName}, err => {
|
||||||
if (err && err.statusCode !== 204) {
|
if (err && err.statusCode !== 204) {
|
||||||
callback(err);
|
callback(err);
|
||||||
|
@ -385,8 +391,19 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
|
||||||
},
|
},
|
||||||
restart: function (name, callback) {
|
restart: function (name, callback) {
|
||||||
var container = docker.client().getContainer(name);
|
var container = docker.client().getContainer(name);
|
||||||
container.restart(function (err) {
|
_muted[name] = true;
|
||||||
|
container.stop(err => {
|
||||||
|
if (err && err.statusCode !== 304) {
|
||||||
|
_muted[name] = false;
|
||||||
callback(err);
|
callback(err);
|
||||||
|
} else {
|
||||||
|
var data = _containers[name];
|
||||||
|
this._startContainer(name, data, err => {
|
||||||
|
_muted[name] = false;
|
||||||
|
this.emit(this.CLIENT_CONTAINER_EVENT, name, 'start');
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
remove: function (name, callback) {
|
remove: function (name, callback) {
|
||||||
|
|
|
@ -79,7 +79,7 @@ var DockerMachine = {
|
||||||
return util.exec([DockerMachine.command(), 'rm', '-f', NAME]);
|
return util.exec([DockerMachine.command(), 'rm', '-f', NAME]);
|
||||||
},
|
},
|
||||||
ip: function () {
|
ip: function () {
|
||||||
return util.exec([DockerMachine.command(), 'ip']).then(stdout => {
|
return util.exec([DockerMachine.command(), 'ip', NAME]).then(stdout => {
|
||||||
return Promise.resolve(stdout.trim().replace('\n', ''));
|
return Promise.resolve(stdout.trim().replace('\n', ''));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue