Module: Dockerun::DSL

Includes:
TR::CondUtils
Included in:
Cli::DSLProxy, Cli::Run
Defined in:
lib/dockerun/dsl.rb

Instance Method Summary collapse

Instance Method Details

#config(&block) ⇒ Object



19
20
21
# File 'lib/dockerun/dsl.rb', line 19

def config(&block)
  _config.instance_eval(&block) 
end

#container_nameObject



114
115
116
117
118
119
120
# File 'lib/dockerun/dsl.rb', line 114

def container_name
  if _docker_cli.is_container_name_given?
    _docker_cli.container_name
  else
    _docker_cli.generated_container_name
  end
end

#dockerfile_patch(&block) ⇒ Object

Additional dockerfile configurations for example if user did not specify the image name, better generate by system so that it can be traced for subsequent functions later such as delete image



37
38
39
# File 'lib/dockerun/dsl.rb', line 37

def dockerfile_patch(&block)
  _file.instance_eval(&block)
end

#exec_rootObject



15
16
17
# File 'lib/dockerun/dsl.rb', line 15

def exec_root
  @_exec_root
end

#from(base_image, &block) ⇒ Object

Main DSL for dockerfile related configurations



28
29
30
31
# File 'lib/dockerun/dsl.rb', line 28

def from(base_image, &block)
  _dfile.base_image = base_image
  _dfile.instance_eval(&block) 
end

#goObject

Trigger point to start the ball rolling!



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/dockerun/dsl.rb', line 47

def go

  # Link context with Dockerfile and docker cli
  if not_empty?(_config.active_context)
    self.listener do |ops, *val|
      _config.active_context.call(ops, *val)
    end

    _dfile.listener do |ops, *val|
      _config.active_context.call(ops, *val)
    end

    _docker_cli.listener do |ops, *val|
      _config.active_context.call(ops, *val)
    end
  end

  # give chance to context to verify the integrity of the
  # workspace before proceed
  trigger_listener(:dsl_before_go, self)

  # check if image exist?
  if not image_exist?
    logger.debug "Image doesn't exist... proceed to build the image"
    # if not exist, build the image giving the name
    st, res = build_image
    if st
      trigger_listener(:dsl_image_built, self)
      #puts " Image '#{image_name}' built successfully"
    else
      trigger_listener(:dsl_image_building_failed, self)
      raise Error, " Image '#{image_name}' failed to be built. Error was : #{res.err_lines.join("\n")}"
    end
  else
    logger.debug "Image exist... skipped image building..."
  end

  # check if container exist?
  if container_exist?
    trigger_listener(:dsl_before_start_container, self)
    logger.debug "Container exist... Starting container..."
    # container exist, start the container
    start_container

    trigger_listener(:dsl_before_attach_container, self)
    logger.debug "Container started... attaching container..."
    # attach to container
    attach_container
    trigger_listener(:dsl_after_attach_container, self)
  else
    trigger_listener(:dsl_before_run_container, self)
    logger.debug "Container does not exist. Creating new container..."
    # Container does not exist, run the container
    run_container
  end

end

#image_nameObject



106
107
108
109
110
111
112
# File 'lib/dockerun/dsl.rb', line 106

def image_name
  if _dfile.is_image_name_given?
    _dfile.image_name
  else
    _dfile.generated_image_name
  end
end

#listener(&block) ⇒ Object



123
124
125
# File 'lib/dockerun/dsl.rb', line 123

def listener(&block)
  @listener = block
end

#set_dry_run_mode(bool = true, prompt = false) ⇒ Object



23
24
25
# File 'lib/dockerun/dsl.rb', line 23

def set_dry_run_mode(bool = true, prompt = false)
  _config.dry_run(bool, prompt)
end

#set_exec_root(root) ⇒ Object



12
13
14
# File 'lib/dockerun/dsl.rb', line 12

def set_exec_root(root)
  @_exec_root = root
end

#up(&block) ⇒ Object

Main DSL for docker cli



42
43
44
# File 'lib/dockerun/dsl.rb', line 42

def up(&block)
  _docker_cli.instance_eval(&block)
end