jarl 0.8.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jarl/application.rb +16 -3
- data/lib/jarl/docker.rb +20 -16
- data/lib/jarl/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8ca764b83d720d8c5b54eec8db4fc5177c6f2f3
|
4
|
+
data.tar.gz: a605b6f8e2f8447eabad0a23b4cad4b0a46b246f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12099f11b9fe1be9c35b467d5f5ab3590fee1df75e90bf20d411faaa7790d87c611a8a5fdc8c6dd294345399525fa629814a44b8ba8bd48889142305fedc9e9b
|
7
|
+
data.tar.gz: 9ddeebf7fe96b833fb7544fca4d7e3c35cddacf46bb91526716f9d1a86a94f5f7eae69f7ff0ed9fb580849a8a6d0730ce3c33dd07666001633c81b072dbf9cc0
|
data/lib/jarl/application.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Jarl
|
2
2
|
class Application
|
3
3
|
attr_reader :group, :name, :hostname, :base_path
|
4
|
-
attr_reader :image, :scale, :volumes, :ports, :environment, :entrypoint, :command
|
4
|
+
attr_reader :image, :scale, :volumes, :ports, :environment, :entrypoint, :command, :logging
|
5
5
|
attr_reader :serial
|
6
6
|
|
7
7
|
# Create Application object from application definition:
|
@@ -46,6 +46,17 @@ module Jarl
|
|
46
46
|
if @command && !@command.is_a?(String)
|
47
47
|
fail "Application '#{self}' has invalid 'command' definition, String is expected"
|
48
48
|
end
|
49
|
+
@logging = (params['logging'] || {}).map { |k, v| [k.to_sym, v] }.to_h
|
50
|
+
unless @logging.is_a?(Hash)
|
51
|
+
fail "Application '#{self}' has invalid 'logging' definition, Hash is expected"
|
52
|
+
end
|
53
|
+
@logging = @logging.map { |k, v| [k.to_sym, v] }.to_h # .symbolize_keys
|
54
|
+
if @logging[:driver] && !@logging[:driver].is_a?(String)
|
55
|
+
fail "Application '#{self}' has invalid 'logging:driver' definition, String is expected"
|
56
|
+
end
|
57
|
+
if @logging[:options] && !@logging[:options].is_a?(Hash)
|
58
|
+
fail "Application '#{self}' has invalid 'logging:options' definition, Hash is expected"
|
59
|
+
end
|
49
60
|
@serial = self.class.next_serial
|
50
61
|
@hostname = @name
|
51
62
|
end
|
@@ -115,7 +126,8 @@ module Jarl
|
|
115
126
|
volumes: volumes,
|
116
127
|
ports: ports,
|
117
128
|
environment: environment,
|
118
|
-
command: (execute_command || command || '') + ' ' + args.join(' ')
|
129
|
+
command: (execute_command || command || '') + ' ' + args.join(' '),
|
130
|
+
logging: logging
|
119
131
|
)
|
120
132
|
end
|
121
133
|
|
@@ -197,7 +209,8 @@ module Jarl
|
|
197
209
|
volumes: application.volumes,
|
198
210
|
ports: application.ports,
|
199
211
|
environment: application.environment,
|
200
|
-
command: application.command
|
212
|
+
command: application.command,
|
213
|
+
logging: application.logging
|
201
214
|
)
|
202
215
|
end
|
203
216
|
|
data/lib/jarl/docker.rb
CHANGED
@@ -98,11 +98,9 @@ module Docker
|
|
98
98
|
raise unless e.to_s =~ /Command failed/
|
99
99
|
end
|
100
100
|
|
101
|
-
#
|
101
|
+
# Construct options string for running a container
|
102
102
|
#
|
103
|
-
def self.
|
104
|
-
container_name = params[:name]
|
105
|
-
Docker::Container.clean_containers(container_name)
|
103
|
+
def self.run_options(params)
|
106
104
|
opts = []
|
107
105
|
opts << params[:volumes].map do |v|
|
108
106
|
"-v #{v}"
|
@@ -113,7 +111,23 @@ module Docker
|
|
113
111
|
opts << params[:environment].map do |k, v|
|
114
112
|
"-e #{k}='#{v}'"
|
115
113
|
end.join(' ')
|
116
|
-
|
114
|
+
if params[:logging] && params[:logging][:driver]
|
115
|
+
opts << "--log-driver #{params[:logging][:driver]}"
|
116
|
+
end
|
117
|
+
if params[:logging] && params[:logging][:options]
|
118
|
+
opts << params[:logging][:options].map do |k, v|
|
119
|
+
"--log-opt #{k}='#{v}'"
|
120
|
+
end.join(' ')
|
121
|
+
end
|
122
|
+
opts.join(' ')
|
123
|
+
end
|
124
|
+
|
125
|
+
# Start container defined by params
|
126
|
+
#
|
127
|
+
def self.start(params)
|
128
|
+
container_name = params[:name]
|
129
|
+
Docker::Container.clean_containers(container_name)
|
130
|
+
docker_cmd = "docker run -d #{run_options(params)} " \
|
117
131
|
" --hostname #{params[:hostname]} " \
|
118
132
|
" --name #{container_name} #{params[:image]} #{params[:command]}"
|
119
133
|
# puts docker_cmd
|
@@ -125,17 +139,7 @@ module Docker
|
|
125
139
|
def self.execute(params)
|
126
140
|
container_name = "#{params[:name]}.execute"
|
127
141
|
Docker::Container.clean_containers(container_name)
|
128
|
-
|
129
|
-
opts << params[:volumes].map do |v|
|
130
|
-
"-v #{v}"
|
131
|
-
end.join(' ')
|
132
|
-
opts << params[:ports].map do |p|
|
133
|
-
"-p #{p}"
|
134
|
-
end.join(' ')
|
135
|
-
opts << params[:environment].map do |k, v|
|
136
|
-
"-e #{k}='#{v}'"
|
137
|
-
end.join(' ')
|
138
|
-
docker_cmd = "docker run -t -i --rm #{opts.join(' ')} " \
|
142
|
+
docker_cmd = "docker run -t -i --rm #{run_options(params)} " \
|
139
143
|
" --hostname #{params[:hostname]} " \
|
140
144
|
" --name #{container_name} #{params[:image]} #{params[:command]}"
|
141
145
|
# puts docker_cmd
|
data/lib/jarl/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jarl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
version: '0'
|
112
112
|
requirements: []
|
113
113
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
114
|
+
rubygems_version: 2.5.2
|
115
115
|
signing_key:
|
116
116
|
specification_version: 4
|
117
117
|
summary: Jarl, docker container management tool
|