dockerize_rails 1.1.0.beta.3 → 1.2.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -1
  3. data/{.travis.yml → .travis.example.yml} +0 -0
  4. data/README.md +51 -0
  5. data/docs/DockerizeRails/CommandLine.html +179 -0
  6. data/docs/DockerizeRails.html +127 -0
  7. data/docs/DockerizeRailsCLI.html +137 -0
  8. data/docs/_index.html +127 -0
  9. data/docs/class_list.html +51 -0
  10. data/docs/css/common.css +1 -0
  11. data/docs/css/full_list.css +58 -0
  12. data/docs/css/style.css +492 -0
  13. data/docs/file.README.html +185 -0
  14. data/docs/file_list.html +56 -0
  15. data/docs/frames.html +17 -0
  16. data/docs/index.html +185 -0
  17. data/docs/js/app.js +248 -0
  18. data/docs/js/full_list.js +216 -0
  19. data/docs/js/jquery.js +4 -0
  20. data/docs/method_list.html +59 -0
  21. data/docs/top-level-namespace.html +112 -0
  22. data/lib/dockerize_rails/command_line_methods.rb +27 -14
  23. data/lib/dockerize_rails/config_generator.rb +3 -3
  24. data/lib/dockerize_rails/constants.rb +22 -7
  25. data/lib/dockerize_rails/docker_commands/docker_build.rb +21 -6
  26. data/lib/dockerize_rails/docker_commands/docker_delete.rb +37 -0
  27. data/lib/dockerize_rails/docker_commands/docker_helpers.rb +81 -0
  28. data/lib/dockerize_rails/docker_commands/docker_options.rb +58 -0
  29. data/lib/dockerize_rails/docker_commands/docker_start.rb +106 -0
  30. data/lib/dockerize_rails/docker_commands/docker_stop.rb +43 -0
  31. data/lib/dockerize_rails/docker_commands.rb +39 -2
  32. data/lib/dockerize_rails/dr_config.rb +1 -1
  33. data/lib/dockerize_rails/helpers.rb +2 -1
  34. data/lib/dockerize_rails/version.rb +1 -1
  35. data/lib/dockerize_rails.rb +11 -0
  36. data/resources/.dockerignore.erb +1 -1
  37. metadata +25 -3
@@ -0,0 +1,37 @@
1
+ module DockerizeRails
2
+ module DockerCommands
3
+ module DockerDelete
4
+ def self.delete_rails
5
+ docker_delete DockerHelpers.get_name(:rails, :container)
6
+ end
7
+
8
+ def self.delete_mysql
9
+ if DRConfig.linked_database? && DRConfig.databases[DRConfig.application_env] == 'mysql'
10
+ return docker_delete DockerHelpers.get_name(:mysql, :container)
11
+ end
12
+ 0
13
+ end
14
+
15
+ def self.delete_postgres
16
+ if DRConfig.linked_database? && DRConfig.databases[DRConfig.application_env] == 'postgresql'
17
+ return docker_delete DockerHelpers.get_name(:postgres, :container)
18
+ end
19
+ 0
20
+ end
21
+
22
+ def self.docker_delete(container_name)
23
+ container = Docker::Container.get(container_name)
24
+ container.stop if container.info['State']['Running']
25
+ container.delete(:force => true)
26
+ puts "Container >#{container_name}< deleted successfully.".green
27
+ 0
28
+ rescue Docker::Error::NotFoundError => exception
29
+ puts exception.to_s.strip.red
30
+ 1
31
+ end
32
+ class << self
33
+ private :docker_delete
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,81 @@
1
+ module DockerizeRails
2
+ module DockerCommands
3
+ module DockerHelpers
4
+ NAMES = {
5
+ image: {
6
+ suffix: ":#{DRConfig.application_env}",
7
+ rails: "#{DRConfig.application_name}_rails".freeze,
8
+ mysql: "#{DRConfig.application_name}_mysql".freeze,
9
+ postgres: "#{DRConfig.application_name}_postgres".freeze
10
+ }.freeze,
11
+ container: {
12
+ suffix: '',
13
+ rails: "#{DRConfig.application_name}_rails_container".freeze,
14
+ mysql: "#{DRConfig.application_name}_mysql_container".freeze,
15
+ postgres: "#{DRConfig.application_name}_postgres_container".freeze
16
+ }.freeze
17
+ }.freeze
18
+
19
+ def self.get_name(service, type)
20
+ "#{NAMES[type][service]}#{NAMES[type][:suffix]}".freeze
21
+ end
22
+
23
+ def self.services_from_docker_compose
24
+ docker_compose = YAML.load_file "#{PATHS.current}/docker-compose.yml"
25
+ docker_compose['services']
26
+ end
27
+
28
+ def self.recurse_merge(first, second)
29
+ first.merge(second) do |_, first_element, second_element|
30
+ if first_element.is_a?(Hash) && second_element.is_a?(Hash)
31
+ recurse_merge(first_element, second_element)
32
+ else
33
+ [*first_element, *second_element]
34
+ end
35
+ end
36
+ end
37
+
38
+ # rubocop:disable Metrics/AbcSize
39
+ # rubocop:disable Metrics/MethodLength
40
+ def self.build_options(definitions, service)
41
+ options = DockerOptions.new
42
+ options.image get_name(service, :image)
43
+ options.name get_name(service, :container)
44
+ options.hostname '0.0.0.0'
45
+ definitions['expose'].each {|expose| options.expose expose} if definitions.key?('expose')
46
+ definitions['environment'].each {|env| options.add_env env} if definitions.key?('environment')
47
+ if definitions.key?('ports')
48
+ definitions['ports'].each do |ports|
49
+ options.add_port_binds(ports.split(':')[1], ports.split(':')[0])
50
+ end
51
+ end
52
+ if definitions.key?('links')
53
+ definitions['links'].each do |link|
54
+ options.add_links(get_name(link.split(':')[0].to_sym, :container), link.split(':')[1])
55
+ end
56
+ end
57
+ options.options
58
+ end
59
+ # rubocop:enable Metrics/AbcSize
60
+ # rubocop:enable Metrics/MethodLength
61
+
62
+ def self.print_version
63
+ docker_version = Docker.version
64
+
65
+ Helpers.print_formatted_info('Docker Version', "#{docker_version['Version']}\n")
66
+ Helpers.print_formatted_info(
67
+ 'API',
68
+ "#{docker_version['ApiVersion']} : #{docker_version['MinAPIVersion']}\n"
69
+ )
70
+ Helpers.print_formatted_info('Git Commit', "#{docker_version['GitCommit']}\n")
71
+ Helpers.print_formatted_info('Go Version', "#{docker_version['GoVersion']}\n")
72
+ # Helpers.print_formatted_info('OS', "#{v['Os']}_#{v['Arch']}_#{v['KernelVersion']}\n")
73
+ Helpers.print_formatted_info('Experimental', "#{docker_version['Experimental']}\n")
74
+ Helpers.print_formatted_info(
75
+ 'Build Time',
76
+ "#{DateTime.parse(docker_version['BuildTime']).strftime('%b %d, %Y %I:%M %p')}\n"
77
+ )
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,58 @@
1
+ module DockerizeRails
2
+ module DockerCommands
3
+ class DockerOptions
4
+ def initialize
5
+ @options = {
6
+ 'Image' => '',
7
+ 'name' => '',
8
+ 'Hostname' => '0.0.0.0',
9
+ 'ExposedPorts' => {},
10
+ 'Env' => [],
11
+ 'HostConfig' => {
12
+ 'PortBindings' => {},
13
+ 'Links' => []
14
+ }
15
+ }
16
+ end
17
+
18
+ def image(image)
19
+ @options['Image'] = image
20
+ end
21
+
22
+ def name(name)
23
+ @options['name'] = name
24
+ end
25
+
26
+ def hostname(hostname)
27
+ @options['Hostname'] = hostname
28
+ end
29
+
30
+ def expose(port)
31
+ @options['ExposedPorts']["#{port}/tcp"] = {}
32
+ @options['HostConfig']['PortBindings']["#{port}/tcp"] = [{'HostPort' => port}]
33
+ end
34
+
35
+ def add_port_binds(container, host)
36
+ @options['HostConfig']['PortBindings']["#{container}/tcp"] = [{'HostPort' => host}]
37
+ end
38
+
39
+ def add_env(env)
40
+ @options['Env'] << env
41
+ end
42
+
43
+ def add_links(container, alias_name)
44
+ @options['HostConfig']['Links'] << "#{container}:#{alias_name}"
45
+ end
46
+
47
+ def options
48
+ deep_copy @options
49
+ end
50
+
51
+ private
52
+
53
+ def deep_copy(o)
54
+ Marshal.load(Marshal.dump(o))
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,106 @@
1
+ module DockerizeRails
2
+ module DockerCommands
3
+ module DockerStart
4
+ def self.start_rails
5
+ services = DockerHelpers.services_from_docker_compose
6
+ begin
7
+ container = Docker::Container.get(DockerHelpers.get_name(:rails, :container))
8
+ if container.info['State']['Running']
9
+ puts " ==> Container >#{DockerHelpers.get_name(:rails, :container)}< already running.".yellow
10
+ else
11
+ docker_start_container(container, services['rails'], :rails)
12
+ puts " ==> Container >#{DockerHelpers.get_name(:rails, :container)}< started successfully".green
13
+ end
14
+ 0
15
+ rescue Docker::Error::NotFoundError
16
+ services.key?('rails') && docker_start(services['rails'], :rails)
17
+ puts " ==> Container >#{DockerHelpers.get_name(:rails, :container)}< started successfully".green
18
+ 0
19
+ rescue Docker::Error::NotFoundError => exception
20
+ puts
21
+ puts exception.to_s.red
22
+ puts
23
+ 1
24
+ end
25
+ end
26
+
27
+ def self.start_mysql
28
+ return 0 unless DRConfig.linked_database? && DRConfig.databases[DRConfig.application_env] == 'mysql'
29
+ services = DockerHelpers.services_from_docker_compose
30
+ begin
31
+ container = Docker::Container.get(DockerHelpers.get_name(:mysql, :container))
32
+ if container.info['State']['Running']
33
+ puts " ==> Container >#{DockerHelpers.get_name(:mysql, :container)}< already running.".yellow
34
+ else
35
+ docker_start_container(container, services['mysql'], :mysql)
36
+ puts " ==> Container >#{DockerHelpers.get_name(:mysql, :container)}< started successfully".green
37
+ end
38
+ 0
39
+ rescue Docker::Error::NotFoundError
40
+ services.key?('mysql') && docker_start(services['mysql'], :mysql)
41
+ puts " ==> Container >#{DockerHelpers.get_name(:mysql, :container)}< started successfully".green
42
+ 0
43
+ rescue Docker::Error::NotFoundError => exception
44
+ puts
45
+ puts exception.to_s.red
46
+ puts
47
+ 1
48
+ end
49
+ end
50
+
51
+ def self.start_postgres
52
+ return 0 unless DRConfig.linked_database? && DRConfig.databases[DRConfig.application_env] == 'postgresql'
53
+ services = DockerHelpers.services_from_docker_compose
54
+ begin
55
+ container = Docker::Container.get(DockerHelpers.get_name(:postgres, :container))
56
+ if container.info['State']['Running']
57
+ puts " ==> Container >#{DockerHelpers.get_name(:postgres, :container)}< already running.".yellow
58
+ else
59
+ docker_start_container(container, services['postgresql'], :postgres)
60
+ puts " ==> Container >#{DockerHelpers.get_name(:postgres, :container)}< started successfully".green
61
+ end
62
+ 0
63
+ rescue Docker::Error::NotFoundError
64
+ services.key?('postgresql') && docker_start(services['postgresql'], :postgres)
65
+ puts " ==> Container >#{DockerHelpers.get_name(:postgres, :container)}< started successfully".green
66
+ 0
67
+ rescue Docker::Error::NotFoundError => exception
68
+ puts
69
+ puts exception.to_s.red
70
+ puts
71
+ 1
72
+ end
73
+ end
74
+
75
+ def self.docker_start_container(container, definitions, service)
76
+ options = DockerCommands::DockerHelpers.build_options(definitions, service)
77
+ container.start(options)
78
+ end
79
+
80
+ # rubocop:disable Metrics/AbcSize
81
+ def self.docker_start(definitions, service)
82
+ options = DockerHelpers.build_options(definitions, service)
83
+ container = Docker::Container.create options
84
+ binds =
85
+ if definitions.key? 'volumes'
86
+ { 'Binds' => definitions['volumes'].map do |volume|
87
+ [if volume.split(':')[0].start_with?('/')
88
+ volume.split(':')[0]
89
+ else
90
+ File.join(PATHS.current, volume.split(':')[0])
91
+ end,
92
+ volume.split(':')[1],
93
+ volume.length > 2 ? volume.split(':')[2] : 'rw'].join(':')
94
+ end }
95
+ end
96
+ container.start binds
97
+ end
98
+ # rubocop:enable Metrics/AbcSize
99
+
100
+ class << self
101
+ private :docker_start
102
+ private :docker_start_container
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,43 @@
1
+ module DockerizeRails
2
+ module DockerCommands
3
+ module DockerStop
4
+ def self.stop_rails
5
+ docker_stop DockerHelpers.get_name(:rails, :container)
6
+ end
7
+
8
+ def self.stop_mysql
9
+ if DRConfig.linked_database? && DRConfig.databases[DRConfig.application_env] == 'mysql'
10
+ return docker_stop DockerHelpers.get_name(:mysql, :container)
11
+ end
12
+ 0
13
+ end
14
+
15
+ def self.stop_postgres
16
+ if DRConfig.linked_database? && DRConfig.databases[DRConfig.application_env] == 'postgresql'
17
+ return docker_stop DockerHelpers.get_name(:postgres, :container)
18
+ end
19
+ 0
20
+ end
21
+
22
+ def self.docker_stop(container_name)
23
+ container = Docker::Container.get(container_name)
24
+ if container.info['State']['Running']
25
+ container.stop
26
+ container.delete(:force => true) if DRNameSpace.namespace.delete_containers
27
+ puts "Container >#{container_name}< stopped successfully.".green
28
+ puts "Container >#{container_name}< deleted successfully.".green if DRNameSpace.namespace.delete_containers
29
+ else
30
+ puts "Container >#{container_name}< is not running.".blue
31
+ end
32
+ 0
33
+ rescue Docker::Error::NotFoundError => exception
34
+ puts exception.to_s.strip.red
35
+ 1
36
+ end
37
+
38
+ class << self
39
+ private :docker_stop
40
+ end
41
+ end
42
+ end
43
+ end
@@ -2,8 +2,10 @@ module DockerizeRails
2
2
  module DockerCommands
3
3
  require 'docker'
4
4
 
5
- def self.version
6
- Docker.version
5
+ def self.info
6
+ puts
7
+ DockerHelpers.print_version
8
+ puts
7
9
  end
8
10
 
9
11
  def self.pull
@@ -31,5 +33,40 @@ module DockerizeRails
31
33
  puts
32
34
  1
33
35
  end
36
+
37
+ def self.start
38
+ status = 0
39
+ status += DockerStart.start_mysql
40
+ status += DockerStart.start_postgres
41
+ status += DockerStart.start_rails
42
+ status
43
+ rescue Docker::Error::NotFoundError => exception
44
+ puts
45
+ puts exception.to_s.red
46
+ puts
47
+ 1
48
+ end
49
+
50
+ def self.stop
51
+ status = 0
52
+ status += DockerStop.stop_rails
53
+ status += DockerStop.stop_mysql
54
+ status += DockerStop.stop_postgres
55
+ status
56
+ rescue Docker::Error::NotFoundError => exception
57
+ puts exception.to_s.strip.red
58
+ 1
59
+ end
60
+
61
+ def self.delete
62
+ status = 0
63
+ status += DockerDelete.delete_rails
64
+ status += DockerDelete.delete_mysql
65
+ status += DockerDelete.delete_postgres
66
+ status
67
+ rescue Docker::Error::NotFoundError => exception
68
+ puts exception.to_s.strip.red
69
+ 1
70
+ end
34
71
  end
35
72
  end
@@ -25,7 +25,7 @@ module DockerizeRails
25
25
  @databases = {}
26
26
 
27
27
  def self.load_dockerize_rails_config
28
- dockerize_rails_config_file = File.join(PATHS.current, Constants::DOCKERIZE_RAILS_CONFIG_FILE_NAME)
28
+ dockerize_rails_config_file = File.join(PATHS.current, Constants::CONFIG_FILE_NAME)
29
29
  if File.exist? dockerize_rails_config_file
30
30
  dockerize_rails_config = YAML.load_file(dockerize_rails_config_file)
31
31
  ATTRIBUTES.each do |attr|
@@ -15,6 +15,7 @@ module DockerizeRails
15
15
  opts.on('--tiny') { options[:tiny] = true }
16
16
  opts.on('--purge') { options[:purge] = true }
17
17
  opts.on('--test-env') { options[:test_env] = true }
18
+ opts.on('--delete') { options[:delete_containers] = true }
18
19
  end
19
20
  parser.parse!
20
21
  [ARGV[0].to_s, args: options]
@@ -43,7 +44,7 @@ module DockerizeRails
43
44
  # -rubocop:disable Metrics/AbcSize
44
45
  def self.help
45
46
  ['
46
- Usage: rocker <command>
47
+ Usage: dock <command>
47
48
  or: bundle exec dock <command>
48
49
 
49
50
  commands:
@@ -1,3 +1,3 @@
1
1
  module DockerizeRails
2
- VERSION = '1.1.0.beta.3'.freeze
2
+ VERSION = '1.2.0.beta.1'.freeze
3
3
  end
@@ -7,8 +7,13 @@ require 'dockerize_rails/dr_config'
7
7
  require 'dockerize_rails/config_loader'
8
8
  require 'dockerize_rails/dr_name_space'
9
9
  require 'dockerize_rails/config_generator'
10
+ require 'dockerize_rails/docker_commands/docker_options'
11
+ require 'dockerize_rails/docker_commands/docker_helpers'
10
12
  require 'dockerize_rails/docker_commands/docker_pull'
11
13
  require 'dockerize_rails/docker_commands/docker_build'
14
+ require 'dockerize_rails/docker_commands/docker_start'
15
+ require 'dockerize_rails/docker_commands/docker_stop'
16
+ require 'dockerize_rails/docker_commands/docker_delete'
12
17
  require 'dockerize_rails/docker_commands'
13
18
  require 'dockerize_rails/command_line_methods'
14
19
  require 'dockerize_rails/command_line'
@@ -23,10 +28,16 @@ module DockerizeRails
23
28
  private_constant :Constants
24
29
  private_constant :Templates
25
30
  private_constant :CommandLineMethods
31
+ private_constant :DockerCommands
26
32
 
27
33
  module DockerCommands
28
34
  private_constant :DockerPull
29
35
  private_constant :DockerBuild
36
+ private_constant :DockerStart
37
+ private_constant :DockerStop
38
+ private_constant :DockerDelete
39
+ private_constant :DockerHelpers
40
+ private_constant :DockerOptions
30
41
  end
31
42
  end
32
43
 
@@ -14,7 +14,7 @@ config/database.yml
14
14
  public/uploads
15
15
  public/assets
16
16
 
17
- <%= Constants::DOCKERIZE_RAILS_CONFIG_FILE_NAME %>
17
+ <%= Constants::CONFIG_FILE_NAME %>
18
18
  <%= Constants::DOCKER_COMPOSE_FILE_NAME %>
19
19
  <%= Constants::DOCKERIGNORE_FILE_NAME %>
20
20
  <%= Constants::SHELL_SCRIPT_FILE_NAME %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerize_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.beta.3
4
+ version: 1.2.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - indrajit
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-06 00:00:00.000000000 Z
11
+ date: 2017-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docker-api
@@ -119,7 +119,7 @@ files:
119
119
  - ".reek"
120
120
  - ".rspec"
121
121
  - ".rubocop.yml"
122
- - ".travis.yml"
122
+ - ".travis.example.yml"
123
123
  - CODE_OF_CONDUCT.md
124
124
  - CONTRIBUTORS.md
125
125
  - Gemfile
@@ -130,6 +130,23 @@ files:
130
130
  - bin/setup
131
131
  - config/database.yml
132
132
  - dockerize_rails.gemspec
133
+ - docs/DockerizeRails.html
134
+ - docs/DockerizeRails/CommandLine.html
135
+ - docs/DockerizeRailsCLI.html
136
+ - docs/_index.html
137
+ - docs/class_list.html
138
+ - docs/css/common.css
139
+ - docs/css/full_list.css
140
+ - docs/css/style.css
141
+ - docs/file.README.html
142
+ - docs/file_list.html
143
+ - docs/frames.html
144
+ - docs/index.html
145
+ - docs/js/app.js
146
+ - docs/js/full_list.js
147
+ - docs/js/jquery.js
148
+ - docs/method_list.html
149
+ - docs/top-level-namespace.html
133
150
  - exe/dock
134
151
  - lib/dockerize_rails.rb
135
152
  - lib/dockerize_rails/command_line.rb
@@ -139,7 +156,12 @@ files:
139
156
  - lib/dockerize_rails/constants.rb
140
157
  - lib/dockerize_rails/docker_commands.rb
141
158
  - lib/dockerize_rails/docker_commands/docker_build.rb
159
+ - lib/dockerize_rails/docker_commands/docker_delete.rb
160
+ - lib/dockerize_rails/docker_commands/docker_helpers.rb
161
+ - lib/dockerize_rails/docker_commands/docker_options.rb
142
162
  - lib/dockerize_rails/docker_commands/docker_pull.rb
163
+ - lib/dockerize_rails/docker_commands/docker_start.rb
164
+ - lib/dockerize_rails/docker_commands/docker_stop.rb
143
165
  - lib/dockerize_rails/dr_config.rb
144
166
  - lib/dockerize_rails/dr_name_space.rb
145
167
  - lib/dockerize_rails/helpers.rb