diff --git a/src/addons.js b/src/addons.js index 172766024..5b2c57b54 100644 --- a/src/addons.js +++ b/src/addons.js @@ -36,8 +36,7 @@ var appdb = require('./appdb.js'), shell = require('./shell.js'), spawn = child_process.spawn, util = require('util'), - uuid = require('node-uuid'), - vbox = require('./vbox.js'); + uuid = require('node-uuid'); var NOOP = function (app, options, callback) { return callback(); }; @@ -710,8 +709,6 @@ function forwardRedisPort(appId, callback) { var redisPort = parseInt(safe.query(data, 'NetworkSettings.Ports.6379/tcp[0].HostPort'), 10); if (!Number.isInteger(redisPort)) return callback(new Error('Unable to get container port mapping')); - vbox.forwardFromHostToVirtualBox('redis-' + appId, redisPort); - return callback(null); }); } @@ -763,8 +760,6 @@ function setupRedis(app, options, callback) { VolumesFrom: [] }; - var isMac = os.platform() === 'darwin'; - var startOptions = { Binds: [ redisVarsFile + ':/etc/redis/redis_vars.sh:ro', @@ -772,10 +767,8 @@ function setupRedis(app, options, callback) { ], Memory: 1024 * 1024 * 75, // 100mb MemorySwap: 1024 * 1024 * 75 * 2, // 150mb - // On Mac (boot2docker), we have to export the port to external world for port forwarding from Mac to work - // On linux, export to localhost only for testing purposes and not for the app itself PortBindings: { - '6379/tcp': [{ HostPort: '0', HostIp: isMac ? '0.0.0.0' : '127.0.0.1' }] + '6379/tcp': [{ HostPort: '0', HostIp: '127.0.0.1' }] }, ReadonlyRootfs: true, RestartPolicy: { @@ -824,8 +817,6 @@ function teardownRedis(app, options, callback) { container.remove(removeOptions, function (error) { if (error && error.statusCode !== 404) return callback(new Error('Error removing container:' + error)); - vbox.unforwardFromHostToVirtualBox('redis-' + app.id); - safe.fs.unlinkSync(paths.ADDON_CONFIG_DIR, 'redis-' + app.id + '_vars.sh'); shell.sudo('teardownRedis', [ RMAPPDIR_CMD, app.id + '/redis' ], function (error, stdout, stderr) { diff --git a/src/apptask.js b/src/apptask.js index 6739ee71c..68785df6c 100644 --- a/src/apptask.js +++ b/src/apptask.js @@ -59,7 +59,6 @@ var addons = require('./addons.js'), sysinfo = require('./sysinfo.js'), util = require('util'), uuid = require('node-uuid'), - vbox = require('./vbox.js'), _ = require('underscore'); var NGINX_APPCONFIG_EJS = fs.readFileSync(__dirname + '/../setup/start/nginx/appconfig.ejs', { encoding: 'utf8' }), @@ -124,8 +123,6 @@ function configureNginx(app, callback) { exports._reloadNginx, updateApp.bind(null, app, { httpPort: freePort }) ], callback); - - vbox.forwardFromHostToVirtualBox(app.id + '-http', freePort); }); } @@ -137,8 +134,6 @@ function unconfigureNginx(app, callback) { } exports._reloadNginx(callback); - - vbox.unforwardFromHostToVirtualBox(app.id + '-http'); } function pullImage(app, callback) { @@ -203,18 +198,13 @@ function createContainer(app, callback) { appdb.getPortBindings(app.id, function (error, portBindings) { if (error) return callback(error); - var isMac = os.platform() === 'darwin'; - var manifest = app.manifest; var exposedPorts = {}, dockerPortBindings = { }; var env = []; // docker portBindings requires ports to be exposed exposedPorts[manifest.httpPort + '/tcp'] = {}; - - // On Mac (boot2docker), we have to export the port to external world for port forwarding from Mac to work - dockerPortBindings[manifest.httpPort + '/tcp'] = [ { HostIp: isMac ? '0.0.0.0' : '127.0.0.1', HostPort: app.httpPort + '' } ]; - + dockerPortBindings[manifest.httpPort + '/tcp'] = [ { HostIp: '127.0.0.1', HostPort: app.httpPort + '' } ]; for (var e in portBindings) { var hostPort = portBindings[e]; @@ -224,7 +214,6 @@ function createContainer(app, callback) { env.push(e + '=' + hostPort); dockerPortBindings[containerPort + '/tcp'] = [ { HostIp: '0.0.0.0', HostPort: hostPort + '' } ]; - vbox.forwardFromHostToVirtualBox(app.id + '-tcp' + containerPort, hostPort); } env.push('CLOUDRON=1'); @@ -401,11 +390,6 @@ function stopContainer(app, callback) { container.stop(options, function (error) { if (error && (error.statusCode !== 304 && error.statusCode !== 404)) return callback(new Error('Error stopping container:' + error)); - var tcpPorts = safe.query(app, 'manifest.tcpPorts', { }); - for (var containerPort in tcpPorts) { - vbox.unforwardFromHostToVirtualBox(app.id + '-tcp' + containerPort); - } - debugApp(app, 'Waiting for container ' + container.id); container.wait(function (error, data) { diff --git a/src/routes/test/apps-test.js b/src/routes/test/apps-test.js index 2f1751b4a..79745c5e5 100644 --- a/src/routes/test/apps-test.js +++ b/src/routes/test/apps-test.js @@ -758,10 +758,7 @@ describe('App installation', function () { expect(urlp.hostname).to.be('redis-' + APP_ID); - var isMac = os.platform() === 'darwin'; - var client = - isMac ? redis.createClient(parseInt(exportedRedisPort, 10), '127.0.0.1', { auth_pass: password }) - : redis.createClient(parseInt(urlp.port, 10), redisIp, { auth_pass: password }); + var client = redis.createClient(parseInt(urlp.port, 10), redisIp, { auth_pass: password }); client.on('error', done); client.set('key', 'value'); client.get('key', function (err, reply) { @@ -1221,10 +1218,7 @@ describe('App installation - port bindings', function () { expect(data.Config.Env).to.contain('REDIS_PASSWORD=' + password); function checkRedis() { - var isMac = os.platform() === 'darwin'; - var client = - isMac ? redis.createClient(parseInt(exportedRedisPort, 10), '127.0.0.1', { auth_pass: password }) - : redis.createClient(parseInt(urlp.port, 10), redisIp, { auth_pass: password }); + var client = redis.createClient(parseInt(urlp.port, 10), redisIp, { auth_pass: password }); client.on('error', done); client.set('key', 'value'); client.get('key', function (err, reply) { @@ -1356,10 +1350,7 @@ describe('App installation - port bindings', function () { expect(data.Config.Env).to.contain('REDIS_HOST=redis-' + APP_ID); expect(data.Config.Env).to.contain('REDIS_PASSWORD=' + password); - var isMac = os.platform() === 'darwin'; - var client = - isMac ? redis.createClient(parseInt(exportedRedisPort, 10), '127.0.0.1', { auth_pass: password }) - : redis.createClient(parseInt(urlp.port, 10), redisIp, { auth_pass: password }); + var client = redis.createClient(parseInt(urlp.port, 10), redisIp, { auth_pass: password }); client.on('error', done); client.set('key', 'value'); client.get('key', function (err, reply) { diff --git a/src/vbox.js b/src/vbox.js deleted file mode 100644 index f51a150e5..000000000 --- a/src/vbox.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -// we can possibly remove this entire file and make our tests -// smarter to just use the host interface provided by boot2docker -// https://github.com/boot2docker/boot2docker#container-port-redirection -// https://github.com/boot2docker/boot2docker/pull/93 -// https://github.com/docker/docker/issues/4007 - -exports = module.exports = { - forwardFromHostToVirtualBox: forwardFromHostToVirtualBox, - unforwardFromHostToVirtualBox: unforwardFromHostToVirtualBox -}; - -var assert = require('assert'), - child_process = require('child_process'), - debug = require('debug')('box:vbox'), - os = require('os'); - - -function forwardFromHostToVirtualBox(rulename, port) { - assert.strictEqual(typeof rulename, 'string'); - assert.strictEqual(typeof port, 'number'); - - if (os.platform() === 'darwin') { - debug('Setting up VirtualBox port forwarding for '+ rulename + ' at ' + port); - child_process.exec( - 'VBoxManage controlvm boot2docker-vm natpf1 delete ' + rulename + ';' + - 'VBoxManage controlvm boot2docker-vm natpf1 ' + rulename + ',tcp,127.0.0.1,' + port + ',,' + port); - } -} - -function unforwardFromHostToVirtualBox(rulename) { - assert.strictEqual(typeof rulename, 'string'); - - if (os.platform() === 'darwin') { - debug('Removing VirtualBox port forwarding for '+ rulename); - child_process.exec('VBoxManage controlvm boot2docker-vm natpf1 delete ' + rulename); - } -} -