docker-builder 0.1.29 → 0.1.30

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25b87b6681068503f2f6d0d8ec3d6173e0af7381
4
- data.tar.gz: c18e85a54b8be929901184b925df68a0d9d7fd8a
3
+ metadata.gz: 256e96eb177d0c4fd4fbc0f79a06d3ab615c3f16
4
+ data.tar.gz: 648599fd31fa6686b2b67c1d577c40896041873e
5
5
  SHA512:
6
- metadata.gz: 63ed4d061457d2d857759c42bce8e9997a0ca0d632232a2681441db91cbbc7465e64a8ee06d322aa47e63442f692e3cd7a8aba71a68536657543e84a406e9b58
7
- data.tar.gz: 44f5c0cfbb9fbe3871f0160095dc4efb9e82ac3e96ebcbff696f4cca40b261d3849728bd680c79c4f8ced2b6a6df98803463ac0fab227dfa22e4d21499bd1ad7
6
+ metadata.gz: 10f38caa907ddf6e402031bb37e0fbe644c1a70ac49eefcfc57225725425b81b9172cb7daaa036abfbcb4c856c2dcba95b578181db92d219730f4a6f4f76944f
7
+ data.tar.gz: ae32df32af0100d09903fb461b887af2d65a0b691976dbba273002a9e18be3cf7da8346383bd5252eb25b3be215e7518bf1b48f4d14f0f7ac3309810b9ab5483
data/install_local.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build docker-builder.gemspec
2
- gem install ./docker-builder-0.1.29.gem
2
+ gem install ./docker-builder-0.1.30.gem
@@ -217,6 +217,61 @@ class CLI < Thor
217
217
  end
218
218
 
219
219
 
220
+ ##
221
+ # [start]
222
+ #
223
+ #
224
+ desc 'start', 'Start Docker container'
225
+
226
+ long_desc <<-EOS.gsub(/^ +/, '')
227
+ Start Docker container.
228
+ EOS
229
+
230
+ method_option :server,
231
+ :aliases => ['-s', '--server'],
232
+ :required => false,
233
+ :type => :string,
234
+ :desc => "Server name"
235
+
236
+ method_option :root_path,
237
+ :aliases => '-r',
238
+ :type => :string,
239
+ :default => '',
240
+ :desc => 'Root path to base all relative path on.'
241
+
242
+ method_option :config_file,
243
+ :aliases => '-c',
244
+ :type => :string,
245
+ :default => 'config.rb',
246
+ :desc => 'Path to your config.rb file.'
247
+
248
+ def start
249
+ puts "starting..."
250
+
251
+ opts = options
252
+
253
+ warnings = false
254
+ errors = false
255
+ begin
256
+ Config.load(options)
257
+
258
+ Config.servers.each do |name, opts|
259
+ server_settings = Settings.load_settings_for_server(name)
260
+
261
+ Manager.start_container(name, server_settings)
262
+ end
263
+
264
+ rescue Exception => err
265
+ puts "exception: #{err.inspect}"
266
+ raise err
267
+ exit(3)
268
+ end
269
+
270
+ exit(errors ? 2 : 1) if errors || warnings
271
+
272
+ end
273
+
274
+
220
275
 
221
276
  ##
222
277
  # [destroy]
@@ -148,43 +148,9 @@ class Manager
148
148
 
149
149
 
150
150
  # start
151
- start_container(settings)
151
+ start_container(name, settings)
152
152
 
153
153
 
154
- # provision after start
155
- install_node_script_type = (settings['install']['node']['script_type'] rescue nil)
156
- install_bootstrap_script_type = (settings['install']['bootstrap']['script_type'] rescue nil)
157
-
158
- if install_node_script_type && install_node_script_type=='chef_recipe'
159
- # run container and provision with chef
160
- #_run_container_chef(settings)
161
-
162
- # ???
163
- #_provision_container_chef_recipe(settings)
164
-
165
- elsif install_node_script_type && install_node_script_type=='shell'
166
- # docker run
167
- #create_and_run_container(settings)
168
-
169
- # provision with shell script
170
- run_shell_script_in_container(settings, "install.sh")
171
-
172
- else
173
- # no script for provision
174
- #_run_container_docker(settings)
175
-
176
- # docker run
177
- #create_and_run_container(settings)
178
-
179
- end
180
-
181
- # bootstrap
182
- if install_bootstrap_script_type && install_bootstrap_script_type=='shell'
183
- script = settings['install']['bootstrap']['script'] || '/opt/bootstrap/bootstrap.sh'
184
-
185
- # bootstsrap with shell script
186
- run_bootsrap_shell_script_in_container(settings, script)
187
- end
188
154
 
189
155
 
190
156
  true
@@ -205,22 +171,18 @@ class Manager
205
171
  end
206
172
  end
207
173
 
208
- def self.start_container(settings)
174
+ def self.start_container(name, settings)
209
175
  # start
210
176
  cmd %Q(docker start #{settings.container_name})
211
177
 
212
178
  # setup
213
179
  setup_container_after_start(settings)
214
- end
215
-
216
180
 
217
- def self.run_bootsrap_shell_script_in_container(settings, script_path)
218
- # exec
219
- cmd %Q(docker exec #{settings.container_name} #{script_path} )
181
+ # provision after start
182
+ run_provision_after_start(settings)
220
183
  end
221
184
 
222
185
 
223
-
224
186
  def self.setup_container_after_start(settings)
225
187
  # second network
226
188
  network2 = settings['docker']['network_secondary']
@@ -230,6 +192,8 @@ class Manager
230
192
  gateway = network2['gateway']
231
193
 
232
194
  if gateway
195
+ puts "setup network gateway"
196
+
233
197
  # fix default gateway
234
198
  cmd %Q(docker exec #{settings.container_name} ip route change default via #{gateway} dev eth1)
235
199
  end
@@ -245,6 +209,56 @@ class Manager
245
209
  end
246
210
 
247
211
 
212
+
213
+ def self.run_provision_after_start(settings)
214
+
215
+ install_node_script_type = (settings['install']['node']['script_type'] rescue nil)
216
+ install_bootstrap_script = (settings['install']['bootstrap']['script'] rescue nil)
217
+
218
+ if install_node_script_type && install_node_script_type=='chef_recipe'
219
+ # run container and provision with chef
220
+ #_run_container_chef(settings)
221
+
222
+ # ???
223
+ #_provision_container_chef_recipe(settings)
224
+
225
+ elsif install_node_script_type && install_node_script_type=='shell'
226
+ # docker run
227
+ #create_and_run_container(settings)
228
+
229
+ # provision with shell script
230
+ run_shell_script_in_container(settings, "install.sh")
231
+
232
+ else
233
+ # no script for provision
234
+ #_run_container_docker(settings)
235
+
236
+ # docker run
237
+ #create_and_run_container(settings)
238
+
239
+ end
240
+
241
+ # bootstrap
242
+ if install_bootstrap_script
243
+ #script = settings['install']['bootstrap']['script'] || '/opt/bootstrap/bootstrap.sh'
244
+
245
+ # bootstsrap with shell script
246
+ run_bootsrap_shell_script_in_container(settings, install_bootstrap_script)
247
+ end
248
+
249
+
250
+ true
251
+ end
252
+
253
+
254
+ def self.run_bootsrap_shell_script_in_container(settings, script_path)
255
+ # exec
256
+ cmd %Q(docker exec #{settings.container_name} #{script_path} )
257
+ end
258
+
259
+
260
+
261
+
248
262
  ### systemd service
249
263
 
250
264
  def self._install_service_container(settings)
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.29"
2
+ VERSION = "0.1.30"
3
3
  end
data/readme.md CHANGED
@@ -480,6 +480,18 @@ it will NOT build a new Docker image.
480
480
 
481
481
 
482
482
 
483
+ # Start Docker container
484
+
485
+ docker-builder start -s server_name
486
+
487
+ it starts docker container which was previously created.
488
+
489
+ Process:
490
+ * Start docker container container with `docker start ..`
491
+ * Provision container
492
+
493
+
494
+
483
495
  # Other tools
484
496
 
485
497
  * packer - https://github.com/mitchellh/packer
@@ -584,3 +596,28 @@ Process:
584
596
  * docker start
585
597
  * when container starts it runs /etc/boostrap which
586
598
  * runs chef-client to provision server first time
599
+
600
+
601
+
602
+ ## Bootstrap with shell script
603
+
604
+ * Dockerfile
605
+
606
+ * include script /opt/bootstrap/bootstrap.sh in container
607
+ ```
608
+ ADD scripts/bootstrap.sh /opt/bootstrap/
609
+
610
+ RUN chmod +x /opt/bootstrap/bootstrap.sh
611
+
612
+ ```
613
+
614
+ * config
615
+
616
+ ```
617
+ 'install' => {
618
+ "bootstrap" => { 'script_type' => 'shell', 'script' => '/opt/bootstrap/bootstrap.sh', },
619
+ },
620
+
621
+
622
+ ```
623
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Ivak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-07 00:00:00.000000000 Z
11
+ date: 2017-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler