docker-builder 0.1.29 → 0.1.30

Sign up to get free protection for your applications and to get access to all the features.
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