Class: Devkitkat::Service::Driver::Docker::Container

Inherits:
Object
  • Object
show all
Includes:
Concerns::ServiceInitializer
Defined in:
lib/devkitkat/service/driver/docker/container.rb

Constant Summary collapse

ROOT_IN_CONTAINER =
'/devkitkat'

Instance Attribute Summary collapse

Attributes included from Concerns::ServiceInitializer

#service

Instance Method Summary collapse

Methods included from Concerns::ServiceInitializer

#initialize

Instance Attribute Details

#containerObject (readonly)

Returns the value of attribute container.



10
11
12
# File 'lib/devkitkat/service/driver/docker/container.rb', line 10

def container
  @container
end

Instance Method Details

#exec(cmds, params = {}, &block) ⇒ Object



36
37
38
39
# File 'lib/devkitkat/service/driver/docker/container.rb', line 36

def exec(cmds, params = {}, &block)
  params.merge!(user: user_name)
  safe_exec(cmds, params, &block)
end

#exec_as_root(cmds, params = {}, &block) ⇒ Object



41
42
43
# File 'lib/devkitkat/service/driver/docker/container.rb', line 41

def exec_as_root(cmds, params = {}, &block)
  safe_exec(cmds, params, &block)
end

#interactive_shell(cmd) ⇒ Object



45
46
47
48
# File 'lib/devkitkat/service/driver/docker/container.rb', line 45

def interactive_shell(cmd)
  # container.exec([new_path], tty: true, stdin: STDIN) { |stream, chunk| print "#{stream}" }
  Kernel.exec('docker', 'exec', '-ti', '--user', user_name, name, cmd)
end

#startObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/devkitkat/service/driver/docker/container.rb', line 12

def start
  @container = find

  if command.interactive?
    raise 'Container has not started yet for interactive session' unless @container
    return
  end

  if @container
    container.restart
  else
    @container = create
    container.start
    create_host_user
  end
end

#stopObject



29
30
31
32
33
34
# File 'lib/devkitkat/service/driver/docker/container.rb', line 29

def stop
  return if command.interactive?
  raise 'Container has not started yet' unless container

  container.stop
end