capistrano-docker_cluster 1.0.1 → 1.0.2

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
  SHA256:
3
- metadata.gz: b21dd5be728c678022ef6ae1b2bc6034e8610cac1c2152fd3cde26e852e0bc35
4
- data.tar.gz: 4a297e06578a06670daab133c6dca12c19d3b2596a82d9f26605d1391adade49
3
+ metadata.gz: b8968081d032261ad943dd8c0a356c9b9862ebd6b000b54e5489fe4f934c401f
4
+ data.tar.gz: 727e4cef7ef2ab53e3ca6c6a19f820b938135f5a024193a83d30bdc217b1826a
5
5
  SHA512:
6
- metadata.gz: 5fc892bf4d56e78fabec0603b8e03ae1edbf151d54753fc46abc71d2a5d0272fd46b5612da053c2e6925a7d7e560fa99d024aea4f26bc57c8456236cd38728c1
7
- data.tar.gz: 5f903a514ea9366f8f4d502b0b32c2cbe821be92edd8344e9d74519cd19346f09c8a348de8723045bd429b1e5c2106ccfe2b3507cf4f5b5cd3d5c2787d78ff58
6
+ metadata.gz: 66820769e19bea0782c7e5c0f966593f8a4a3472bead40666ea0167f2ad91c9e51760fa15b9477a8c8b0d191ef637a6961c44fab42a0c7cdfd0284030a1dc9f8
7
+ data.tar.gz: 3cbb64c824c58e5512cf5481981692e0d9363c3e38e14fe55e836a51bafc86f2f4fe9c55803f6ef59fd796411438b166f0583784f704601f5a353d48f6eb8256
data/CHANGE_LOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 1.0.2
2
+
3
+ * Allow specifying app specific settings as capistrano variables `docker_app_configs_<app>` and `docker_app_args_<app>`.
4
+
1
5
  # 1.0.1
2
6
 
3
7
  * Fix module naming convention to match gem name.
data/README.md CHANGED
@@ -32,10 +32,16 @@ The deployment is configured with the following properties in your capistrano re
32
32
 
33
33
  * `docker_app_configs` - Map of configuration files for starting specific docker apps.
34
34
 
35
+ * `docker_configs_<app>` - List of global configuration files for starting a docker app.
36
+
35
37
  * `docker_args` - List of global command line arguments for all continers.
36
38
 
37
39
  * `docker_app_args` - Map of command line arguments for starting specific docker apps.
38
40
 
41
+ * `docker_args_<app>` - List of global command line arguments for starting a specific docker app.
42
+
43
+ Directory structures are ignored when configuration filse copies to servers for `docker_configs` and `docker_app_configs`. This means you can only have one file with a given base name in all you configuration files. So, `config/app/web.properties` and `config/production/web.properties` will both be copied to `confg/web.properties` on the servers. You can use this feature to overwrite whole files if you need to, but otherwise you'll need to use unique file names.
44
+
39
45
  ### Example Configuration
40
46
 
41
47
  ```ruby
data/bin/docker-cluster CHANGED
@@ -20,7 +20,7 @@
20
20
  # host port 8000 to container port 80 and the second mapping host port 8001 to container port 80.
21
21
  #
22
22
  # The --hostname parameter can be used to specify a base host name for the containers. The host name for each
23
- # container will be "container_name.base_host_hamer" where container name uses a hyphen instead of a period as
23
+ # container will be "container_name.base_host_name" where container name uses a hyphen instead of a period as
24
24
  # the delimiter.
25
25
  #
26
26
  # The --healthcheck parameter can be used to specify either a command to run inside the container or a URL
@@ -38,6 +38,8 @@
38
38
  #
39
39
  # The --command parameter can be used to specify the command each docker container should run. If multiple command parameters
40
40
  # are specified, they will be concatenated together. You can use this to specify a command and arguments separately.
41
+ # You can also specify the command by using --. Anything after a double hyphen will be appended to the docker
42
+ # command line verbatim.
41
43
  #
42
44
  # The --force parameter can be used to specify that containers should always be restarted. The default behavior
43
45
  # is to only restart containers if they are not running the specified image.
@@ -139,6 +141,11 @@ read_arguments() {
139
141
  set -o xtrace
140
142
  CMD_OUT=/dev/stdout
141
143
  ;;
144
+ -- )
145
+ shift
146
+ DOCKER_RUN_COMMAND="$DOCKER_RUN_COMMAND $@"
147
+ shift ${#@}
148
+ ;;
142
149
  * )
143
150
  DOCKER_RUN_ARGS="$DOCKER_RUN_ARGS $1"
144
151
  esac
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "capistrano/docker_cluster"
@@ -130,10 +130,22 @@ module Capistrano
130
130
  end
131
131
 
132
132
  apps = Array(fetch_for_host(host, :docker_apps))
133
-
134
133
  app_configs = app_configuration(fetch(:docker_app_configs, nil))
134
+ host_app_configs = app_configuration(host.properties.send(:docker_app_configs))
135
+ apps += app_configs.keys if app_configs
136
+ apps += host_app_configs.keys if host_app_configs
137
+ apps = apps.collect(&:to_s).uniq
138
+
139
+ if app_configs
140
+ app_configs.values.each do |paths|
141
+ Array(paths).each do |path|
142
+ configs[File.basename(path)] = path
143
+ end
144
+ end
145
+ end
146
+
135
147
  apps.each do |app|
136
- Array(app_configs[app.to_s]).each do |path|
148
+ Array(fetch(:"docker_app_configs_#{app}")).each do |path|
137
149
  configs[File.basename(path)] = path
138
150
  end
139
151
  end
@@ -142,9 +154,16 @@ module Capistrano
142
154
  configs[File.basename(path)] = path
143
155
  end
144
156
 
145
- host_app_configs = app_configuration(host.properties.send(:docker_app_configs))
157
+ if host_app_configs
158
+ host_app_configs.values.each do |paths|
159
+ Array(paths).each do |path|
160
+ configs[File.basename(path)] = path
161
+ end
162
+ end
163
+ end
164
+
146
165
  apps.each do |app|
147
- Array(host_app_configs[app.to_s]).each do |path|
166
+ Array(host.properties.send(:"docker_app_configs_#{app}")).each do |path|
148
167
  configs[File.basename(path)] = path
149
168
  end
150
169
  end
@@ -182,24 +201,43 @@ module Capistrano
182
201
  end
183
202
 
184
203
  def app_host_args(app, host)
185
- config_args = config_args(fetch(:docker_configs, nil))
204
+ global_config_args = config_args(fetch(:docker_configs, nil))
186
205
  command_args = Array(fetch(:docker_args, nil))
187
206
 
188
207
  host_config_args = config_args(host.properties.send(:docker_configs))
189
- host_command_args = Array(host.properties.send(:"docker_args"))
208
+ host_command_args = Array(host.properties.send(:docker_args))
190
209
 
191
210
  app_configs = app_configuration(fetch(:docker_app_configs, {}))
192
211
  app_args = app_configuration(fetch(:docker_app_args, {}))
193
212
 
194
- host_app_configs = app_configuration(host.properties.send(:"docker_app_configs"))
195
- host_app_args = app_configuration(host.properties.send(:"docker_app_args"))
213
+ host_app_configs = app_configuration(host.properties.send(:docker_app_configs))
214
+ host_app_args = app_configuration(host.properties.send(:docker_app_args))
196
215
 
197
216
  app = app.to_s
198
217
  app_config_args = config_args(app_configs[app])
199
218
  app_command_args = Array(app_args[app])
200
219
  host_app_config_args = config_args(host_app_configs[app])
201
220
  host_app_command_args = Array(host_app_args[app])
202
- args = config_args + command_args + app_config_args + app_command_args + host_config_args + host_command_args + host_app_config_args + host_app_command_args
221
+
222
+ inline_app_config_args = config_args(fetch(:"docker_app_configs_#{app}", nil))
223
+ inline_app_command_args = Array(fetch(:"docker_app_args_#{app}", nil))
224
+
225
+ host_inline_app_config_args = config_args(host.properties.send(:"docker_app_configs_#{app}"))
226
+ host_inline_app_command_args = Array(host.properties.send(:"docker_app_args_#{app}"))
227
+
228
+ args = global_config_args +
229
+ command_args +
230
+ app_config_args +
231
+ inline_app_config_args +
232
+ app_command_args +
233
+ inline_app_command_args +
234
+ host_config_args +
235
+ host_command_args +
236
+ host_app_config_args +
237
+ host_inline_app_config_args +
238
+ host_app_command_args +
239
+ host_inline_app_command_args
240
+
203
241
  args.uniq
204
242
  end
205
243
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Capistrano
4
4
  module DockerCluster
5
- VERSION = "1.0.1"
5
+ VERSION = "1.0.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-docker_cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-28 00:00:00.000000000 Z
11
+ date: 2020-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -65,6 +65,7 @@ files:
65
65
  - README.md
66
66
  - bin/docker-cluster
67
67
  - capistrano-docker_cluster.gemspec
68
+ - lib/capistrano-docker_cluster.rb
68
69
  - lib/capistrano/docker_cluster.rb
69
70
  - lib/capistrano/docker_cluster/scripts.rb
70
71
  - lib/capistrano/docker_cluster/version.rb