eac_docker 0.1.0 → 0.2.0
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 +4 -4
- data/lib/eac_docker/container.rb +24 -0
- data/lib/eac_docker/images/coded.rb +39 -0
- data/lib/eac_docker/images/templatized.rb +26 -0
- data/lib/eac_docker/registry.rb +17 -0
- data/lib/eac_docker/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30d5ee27849d893d0baaeae9c9693dcb5b3b84349eee98f07081d6566ee5b632
|
4
|
+
data.tar.gz: 749bf0ae7c23323717f41acfa32170e4053c4d43205269c643da486d1d73cd00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c054e0d39c8aad0cf2547b49ec509331bc8e98548208e7769c7d742fc585e2436dd1998630dac2792c1732e00df4e191f06766f04522404f0fc330b9e367146f
|
7
|
+
data.tar.gz: 3386804efb02936f16b3d2e3564c8fb07834309d778ce20c7edba1a0dbd5d8e68967b4b16779984804abc99acf7076324509932c42ea230067b80819e5b4a0a6
|
data/lib/eac_docker/container.rb
CHANGED
@@ -8,6 +8,7 @@ module EacDocker
|
|
8
8
|
immutable_accessor :interactive, :temporary, :tty, type: :boolean
|
9
9
|
immutable_accessor :env, type: :hash
|
10
10
|
immutable_accessor :command_arg, :volume, type: :array
|
11
|
+
attr_reader :id
|
11
12
|
common_constructor :image
|
12
13
|
|
13
14
|
def immutable_constructor_args
|
@@ -16,6 +17,23 @@ module EacDocker
|
|
16
17
|
|
17
18
|
alias immutable_volume volume
|
18
19
|
|
20
|
+
def hostname
|
21
|
+
::EacDocker::Executables.docker.command(
|
22
|
+
'inspect', '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}',
|
23
|
+
id
|
24
|
+
).execute!.strip
|
25
|
+
end
|
26
|
+
|
27
|
+
def on_detached
|
28
|
+
command = ::EacDocker::Executables.docker.command(*(%w[run --detach] + run_command_args))
|
29
|
+
self.id = command.execute!.strip
|
30
|
+
begin
|
31
|
+
yield(self)
|
32
|
+
ensure
|
33
|
+
stop
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
19
37
|
def volume(left_part, right_part = null)
|
20
38
|
immutable_volume(right_part.if_present(left_part) { |v| "#{left_part}:#{v}" })
|
21
39
|
end
|
@@ -29,8 +47,14 @@ module EacDocker
|
|
29
47
|
command_args
|
30
48
|
end
|
31
49
|
|
50
|
+
def stop
|
51
|
+
::EacDocker::Executables.docker.command('stop', id).execute!
|
52
|
+
end
|
53
|
+
|
32
54
|
private
|
33
55
|
|
56
|
+
attr_writer :id
|
57
|
+
|
34
58
|
def run_command_boolean_args
|
35
59
|
r = []
|
36
60
|
r << '--interactive' if interactive?
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_docker/executables'
|
4
|
+
require 'eac_docker/images/base'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module EacDocker
|
8
|
+
module Images
|
9
|
+
class Coded < ::EacDocker::Images::Base
|
10
|
+
enable_simple_cache
|
11
|
+
enable_immutable
|
12
|
+
immutable_accessor :tag
|
13
|
+
common_constructor :path do
|
14
|
+
self.path = path.to_pathname
|
15
|
+
end
|
16
|
+
|
17
|
+
def immutable_constructor_args
|
18
|
+
[path]
|
19
|
+
end
|
20
|
+
|
21
|
+
def provide
|
22
|
+
id
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def id_uncached
|
29
|
+
::EacDocker::Executables.docker.command(*build_args).execute!.strip
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_args
|
33
|
+
args = %w[build --quiet]
|
34
|
+
args += ['--tag', tag] if tag.present?
|
35
|
+
args + [path.to_path]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_docker/images/base'
|
4
|
+
require 'eac_docker/images/coded'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
require 'eac_ruby_utils/fs/temp'
|
7
|
+
|
8
|
+
module EacDocker
|
9
|
+
module Images
|
10
|
+
class Templatized < ::EacDocker::Images::Base
|
11
|
+
enable_immutable
|
12
|
+
immutable_accessor :tag
|
13
|
+
|
14
|
+
def provide
|
15
|
+
::EacRubyUtils::Fs::Temp.on_directory do |provide_dir|
|
16
|
+
template.apply(self, provide_dir)
|
17
|
+
coded_image(provide_dir).tag(tag).provide
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def coded_image(provide_dir)
|
22
|
+
::EacDocker::Images::Coded.new(provide_dir)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/eac_docker/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_docker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Put here the authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_ruby_utils
|
@@ -55,7 +55,10 @@ files:
|
|
55
55
|
- lib/eac_docker/executables.rb
|
56
56
|
- lib/eac_docker/images.rb
|
57
57
|
- lib/eac_docker/images/base.rb
|
58
|
+
- lib/eac_docker/images/coded.rb
|
58
59
|
- lib/eac_docker/images/named.rb
|
60
|
+
- lib/eac_docker/images/templatized.rb
|
61
|
+
- lib/eac_docker/registry.rb
|
59
62
|
- lib/eac_docker/rspec.rb
|
60
63
|
- lib/eac_docker/version.rb
|
61
64
|
homepage:
|