startProxy(httpPort, function(err, subdomain, proxy) {
              if (err) return connection.destroy()

              var container = containers[id] = {
                id: id,
                host: 'http://' + subdomain,
                ports: {http: httpPort, fs: filesPort, docker: dockerHostPort}
              }

              server.emit('spawn', container)

              var ports = {}
              var dockercontainerport = opts.dockerport || 9000
              ports[httpPort] = 80
              ports[filesPort] = 8441
              ports[dockerHostPort] = dockercontainerport

              var envs = {}
              envs['CONTAINER_ID'] = container.id
              envs['HOST'] = container.host
              envs['PORT_80'] = httpPort
              envs['PORT_8441'] = filesPort
              envs['PORT_' + dockercontainerport] = dockerHostPort
              if (opts.envs) {
                Object.keys(opts.envs).forEach(function(name) {
                  envs[name] = opts.envs[name]
                })
              }

              var dopts = {
                tty: opts.tty === undefined ? true : opts.tty,
                env: envs,
                ports: ports,
                volumes: opts.volumes || {},
                beforeCreate: opts.beforeCreate
              }
              
              if (persist) dopts.volumes[TMPDIR + '/'+id] = '/root'
              if (opts.trusted) dopts.volumes['/var/run/docker.sock'] = '/var/run/docker.sock'

              stream.on('close', function () {
                debug('socket close', id, +new Date())
              })

              pump(stream, docker(image, dopts), debugStream(), stream, function(err) {
                if (proxy) proxy.close()
                server.emit('kill', container)
                delete containers[id]
              })
            })
Beispiel #2
0
var docker = require('docker-browser-console')
var websocket = require('websocket-stream')

var terminal = docker()

terminal
  .pipe(websocket('ws://'+window.location.hostname+':10000'))
  .pipe(terminal)
  .appendTo('#terminal')