indocker 0.0.2 → 0.0.5

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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +42 -6
  3. data/bin/indocker +1 -1
  4. data/indocker.gemspec +4 -0
  5. data/lib/indocker/application_initializer.rb +1 -12
  6. data/lib/indocker/cli.rb +10 -0
  7. data/lib/indocker/configs/config.rb +93 -22
  8. data/lib/indocker/configs/config_factory.rb +17 -16
  9. data/lib/indocker/configs/config_initializer.rb +9 -0
  10. data/lib/indocker/container/container_builder.rb +29 -0
  11. data/lib/indocker/{directives → container}/container_directives_runner.rb +8 -0
  12. data/lib/indocker/container/container_dsl.rb +26 -3
  13. data/lib/indocker/container/container_inspector.rb +26 -0
  14. data/lib/indocker/container/container_manager.rb +43 -32
  15. data/lib/indocker/container/container_metadata.rb +31 -26
  16. data/lib/indocker/container/container_metadata_factory.rb +5 -2
  17. data/lib/indocker/directives/base.rb +6 -10
  18. data/lib/indocker/directives/container_directives/base.rb +4 -0
  19. data/lib/indocker/directives/container_directives/cmd.rb +7 -0
  20. data/lib/indocker/directives/container_directives/env.rb +7 -0
  21. data/lib/indocker/directives/container_directives/env_file.rb +3 -3
  22. data/lib/indocker/directives/container_directives/from.rb +4 -2
  23. data/lib/indocker/directives/container_directives/ports.rb +11 -4
  24. data/lib/indocker/directives/container_directives/volume.rb +23 -0
  25. data/lib/indocker/directives/{docker_directives → image_directives}/base.rb +13 -1
  26. data/lib/indocker/directives/{docker_directives → image_directives}/cmd.rb +5 -1
  27. data/lib/indocker/directives/image_directives/copy.rb +32 -0
  28. data/lib/indocker/directives/{prepare_directives → image_directives}/docker_cp.rb +5 -1
  29. data/lib/indocker/directives/{docker_directives → image_directives}/entrypoint.rb +5 -1
  30. data/lib/indocker/directives/image_directives/env.rb +9 -0
  31. data/lib/indocker/directives/image_directives/env_file.rb +19 -0
  32. data/lib/indocker/directives/image_directives/expose.rb +9 -0
  33. data/lib/indocker/directives/image_directives/from.rb +36 -0
  34. data/lib/indocker/directives/image_directives/registry.rb +30 -0
  35. data/lib/indocker/directives/image_directives/run.rb +17 -0
  36. data/lib/indocker/directives/image_directives/workdir.rb +9 -0
  37. data/lib/indocker/directives/partial.rb +9 -1
  38. data/lib/indocker/docker_api/container_config.rb +121 -0
  39. data/lib/indocker/{docker_api.rb → docker_api/docker_api.rb} +79 -52
  40. data/lib/indocker/dsl_context.rb +4 -0
  41. data/lib/indocker/envs/env_metadata.rb +4 -0
  42. data/lib/indocker/errors.rb +5 -1
  43. data/lib/indocker/git/git_api.rb +32 -0
  44. data/lib/indocker/git/git_helper.rb +34 -0
  45. data/lib/indocker/git/git_service.rb +21 -0
  46. data/lib/indocker/handlers/{run_container.rb → container_run.rb} +4 -13
  47. data/lib/indocker/handlers/container_stop.rb +17 -0
  48. data/lib/indocker/handlers/performable.rb +22 -0
  49. data/lib/indocker/image/image_builder.rb +22 -7
  50. data/lib/indocker/image/image_dependencies_manager.rb +13 -9
  51. data/lib/indocker/image/image_directives_runner.rb +99 -0
  52. data/lib/indocker/image/image_dockerfile_builder.rb +24 -0
  53. data/lib/indocker/image/image_dsl.rb +38 -18
  54. data/lib/indocker/image/image_evaluator.rb +1 -1
  55. data/lib/indocker/image/image_helper.rb +9 -0
  56. data/lib/indocker/image/image_metadata.rb +9 -9
  57. data/lib/indocker/image/image_metadata_factory.rb +11 -10
  58. data/lib/indocker/image/image_metadata_repository.rb +8 -9
  59. data/lib/indocker/registry/registry_api.rb +46 -0
  60. data/lib/indocker/registry/registry_helper.rb +20 -0
  61. data/lib/indocker/registry/registry_service.rb +28 -0
  62. data/lib/indocker/utils/logger_factory.rb +1 -0
  63. data/lib/indocker/utils/registry_authenticator.rb +5 -5
  64. data/lib/indocker/utils/tar_helper.rb +5 -5
  65. data/lib/indocker/version.rb +1 -1
  66. data/lib/indocker/volumes/volume_metadata.rb +9 -0
  67. data/lib/indocker/volumes/volume_metadata_factory.rb +9 -0
  68. data/lib/indocker/volumes/volume_metadata_repository.rb +34 -0
  69. data/lib/indocker.rb +56 -27
  70. data/spec/example/.indocker/config.rb +14 -7
  71. data/spec/fixtures/spec.env +2 -0
  72. data/spec/indocker/configs/config_spec.rb +52 -1
  73. data/spec/indocker/container/container_builder_spec.rb +67 -0
  74. data/spec/indocker/container/container_manager_spec.rb +177 -129
  75. data/spec/indocker/docker_api/container_config_spec.rb +64 -0
  76. data/spec/indocker/{utils → docker_api}/docker_api_spec.rb +38 -13
  77. data/spec/indocker/handlers/container_run_spec.rb +60 -0
  78. data/spec/indocker/image/image_builder_spec.rb +64 -26
  79. data/spec/indocker/image/image_directives_runner_spec.rb +141 -0
  80. data/spec/indocker/image/image_dockerfile_builder_spec.rb +25 -0
  81. data/spec/indocker/image/image_evaluator_spec.rb +29 -9
  82. data/spec/spec_helper.rb +38 -16
  83. metadata +108 -32
  84. data/lib/indocker/directives/docker_directives/copy.rb +0 -27
  85. data/lib/indocker/directives/docker_directives/env.rb +0 -5
  86. data/lib/indocker/directives/docker_directives/from.rb +0 -30
  87. data/lib/indocker/directives/docker_directives/run.rb +0 -5
  88. data/lib/indocker/directives/docker_directives/workdir.rb +0 -5
  89. data/lib/indocker/directives/image_directives_runner.rb +0 -120
  90. data/lib/indocker/directives/prepare_directives/base.rb +0 -6
  91. data/lib/indocker/envs/manager.rb +0 -30
  92. data/lib/indocker/handlers/base.rb +0 -13
  93. data/spec/indocker/directives/image_directives_runner_spec.rb +0 -121
  94. data/spec/indocker/handlers/run_container_spec.rb +0 -107
  95. data/spec/tmp/indocker_list_container_files/deeper/example3.txt +0 -1
  96. data/spec/tmp/indocker_list_container_files/deeper/example4.txt +0 -1
  97. data/spec/tmp/indocker_list_container_files/example1.txt +0 -1
  98. data/spec/tmp/indocker_list_container_files/example2.txt +0 -1
@@ -1,107 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Indocker::Handlers::RunContainer' do
4
- subject { ioc.run_container_handler }
5
-
6
- describe '#handle' do
7
- context 'for valid cmd process in container' do
8
- let(:container) { ioc.container_metadata_repository.get_by_name(:indocker_correct_container) }
9
-
10
- before do
11
- Indocker.define_image :indocker_correct_image do
12
- from 'alpine:latest'
13
-
14
- cmd ['/bin/sh']
15
- end
16
-
17
- Indocker.define_container :indocker_correct_container do
18
- use images.indocker_correct_image
19
- end
20
- end
21
-
22
- context 'for new container' do
23
- before do
24
- subject.handle(name: :indocker_correct_container, current_path: nil)
25
- end
26
-
27
- it 'creates container' do
28
- expect(
29
- ioc.docker_api.container_exists?(:indocker_correct_container)
30
- ).to be true
31
- end
32
-
33
- it 'runs container' do
34
- expect(
35
- ioc.docker_api.get_container_state(:indocker_correct_container)
36
- ).to eq(Indocker::ContainerMetadata::States::RUNNING)
37
- end
38
-
39
- it 'logs successfull result' do
40
- expect(
41
- ioc.logger.messages.last
42
- ).to eq("INFO".colorize(:green) + ": Successfully started container :indocker_correct_container")
43
- end
44
- end
45
-
46
- context 'for existing container' do
47
- before do
48
- subject.handle(name: :indocker_correct_container, current_path: nil)
49
- end
50
-
51
- it 'stops, destroy and create container again' do
52
- old_container_id = ioc.docker_api.get_container_id(:indocker_correct_container)
53
-
54
- subject.handle(name: :indocker_correct_container, current_path: nil)
55
-
56
- new_container_id = ioc.docker_api.get_container_id(:indocker_correct_container)
57
-
58
- expect(new_container_id).not_to eq(old_container_id)
59
- end
60
-
61
- it 'runs container again' do
62
- subject.handle(name: :indocker_correct_container, current_path: nil)
63
-
64
- expect(
65
- ioc.docker_api.get_container_state(:indocker_correct_container)
66
- ).to eq(Indocker::ContainerMetadata::States::RUNNING)
67
- end
68
-
69
- it 'logs successfull result' do
70
- expect(
71
- ioc.logger.messages.last
72
- ).to eq("INFO".colorize(:green) + ": Successfully started container :indocker_correct_container")
73
- end
74
- end
75
- end
76
-
77
- context 'for falling cmd process in container' do
78
- let(:container) { ioc.container_metadata_repository.get_by_name(:container_with_falling_cmd) }
79
-
80
- before do
81
- Indocker.define_image :indocker_image_with_falling_cmd do
82
- from 'alpine:latest'
83
-
84
- cmd ['invalid/process']
85
- end
86
-
87
- Indocker.define_container :container_with_falling_cmd do
88
- use images.indocker_image_with_falling_cmd
89
- end
90
-
91
- subject.handle(name: :container_with_falling_cmd, current_path: nil)
92
- end
93
-
94
- it 'logs error text' do
95
- expect(
96
- ioc.logger.messages.last
97
- ).to eq("ERROR".colorize(:red) + ": oci runtime error: container_linux.go:265: starting container process caused \"exec: \\\"invalid/process\\\": stat invalid/process: no such file or directory\"")
98
- end
99
-
100
- it 'does not run container' do
101
- expect(
102
- ioc.docker_api.get_container_state(:container_with_falling_cmd)
103
- ).to eq(Indocker::ContainerMetadata::States::CREATED)
104
- end
105
- end
106
- end
107
- end
@@ -1 +0,0 @@
1
- example3.txt
@@ -1 +0,0 @@
1
- example4.txt
@@ -1 +0,0 @@
1
- example1.txt
@@ -1 +0,0 @@
1
- example2.txt