docker-builder 0.1.50 → 0.1.55

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/{Rakefile → Rakefile_temp} +8 -7
  3. data/install_local.sh +1 -1
  4. data/lib/docker_builder.rb +4 -1
  5. data/lib/docker_builder/cli.rb +23 -56
  6. data/lib/docker_builder/config.rb +75 -34
  7. data/lib/docker_builder/config/dsl.rb +17 -1
  8. data/lib/docker_builder/{manager.rb → manager_container.rb} +25 -308
  9. data/lib/docker_builder/manager_image.rb +103 -0
  10. data/lib/docker_builder/provisioner/base.rb +188 -0
  11. data/lib/docker_builder/provisioner/{provisioner_chef.rb → chef.rb} +5 -1
  12. data/lib/docker_builder/server_settings.rb +34 -64
  13. data/lib/docker_builder/version.rb +1 -1
  14. data/readme.md +118 -79
  15. data/temp_config.rb +17 -0
  16. metadata +8 -58
  17. data/examples/example-apps-php/.chef/knife.rb +0 -6
  18. data/examples/example-apps-php/config.rb +0 -19
  19. data/examples/example-apps-php/servers/apps-php/.chef/knife.rb +0 -2
  20. data/examples/example-apps-php/servers/apps-php/config.rb +0 -69
  21. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/README.md +0 -1
  22. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/metadata.rb +0 -9
  23. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/build.rb +0 -43
  24. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install.rb +0 -55
  25. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_app.rb +0 -27
  26. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_host.rb +0 -9
  27. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/index.html.erb +0 -4
  28. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb +0 -55
  29. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb.1 +0 -55
  30. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/default.conf.erb +0 -45
  31. data/examples/example-apps-php/servers/apps-php/readme.md +0 -0
  32. data/examples/example-apps-php/temp/apps-php.1.json +0 -14
  33. data/examples/example-base-chef/.chef/knife.rb +0 -6
  34. data/examples/example-base-chef/config.rb +0 -19
  35. data/examples/example-base-chef/readme.md +0 -8
  36. data/examples/example-base-chef/servers/my/.chef/knife.rb +0 -2
  37. data/examples/example-base-chef/servers/my/config.rb +0 -53
  38. data/examples/example-base-chef/servers/my/cookbooks/my/README.md +0 -1
  39. data/examples/example-base-chef/servers/my/cookbooks/my/metadata.rb +0 -9
  40. data/examples/example-base-chef/servers/my/cookbooks/my/recipes/build.rb +0 -23
  41. data/examples/example-base-chef/servers/my/cookbooks/my/recipes/install.rb +0 -0
  42. data/examples/example-base-chef/servers/my/cookbooks/my/recipes/install_host.rb +0 -9
  43. data/examples/example-base-chef/servers/my/readme.md +0 -0
  44. data/examples/example-kafka-zookeeper/config.rb +0 -87
  45. data/examples/example-kafka-zookeeper/servers/kafka/Dockerfile +0 -21
  46. data/examples/example-kafka-zookeeper/servers/kafka/README.md +0 -78
  47. data/examples/example-kafka-zookeeper/servers/kafka/files/LICENSE +0 -202
  48. data/examples/example-kafka-zookeeper/servers/kafka/files/broker-list.sh +0 -5
  49. data/examples/example-kafka-zookeeper/servers/kafka/files/create-topics.sh +0 -32
  50. data/examples/example-kafka-zookeeper/servers/kafka/files/download-kafka.sh +0 -5
  51. data/examples/example-kafka-zookeeper/servers/kafka/files/start-kafka-shell.sh +0 -2
  52. data/examples/example-kafka-zookeeper/servers/kafka/files/start-kafka.sh +0 -67
  53. data/examples/example-nginx/config.rb +0 -19
  54. data/examples/example-nginx/servers/nginx/.chef/knife.rb +0 -8
  55. data/examples/example-nginx/servers/nginx/config.rb +0 -55
  56. data/examples/example-nginx/servers/nginx/cookbooks/nginx/README.md +0 -1
  57. data/examples/example-nginx/servers/nginx/cookbooks/nginx/metadata.rb +0 -9
  58. data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/build.rb +0 -10
  59. data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install.rb +0 -28
  60. data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install_host.rb +0 -9
  61. data/examples/example-nginx/servers/nginx/cookbooks/nginx/templates/index.html.erb +0 -4
  62. data/examples/example-nginx/servers/nginx/cookbooks/nginx/templates/nginx-sites/default.conf.erb +0 -45
  63. data/examples/example-nginx/servers/nginx/readme.md +0 -0
  64. data/examples/example-nginx/servers/nginx/scripts/install.sh +0 -3
  65. data/examples/example-nginx/temp/ex_nginx.json +0 -20
  66. data/examples/example-nginx/temp/nginx.json +0 -1
  67. data/examples/example-swarm-redis/config.rb +0 -61
  68. data/examples/example-swarm-redis/readme.md +0 -10
  69. data/lib/docker_builder/temp.rb +0 -1
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.50"
2
+ VERSION = "0.1.55"
3
3
  end
data/readme.md CHANGED
@@ -193,47 +193,52 @@ Process:
193
193
  * run provision to setup host machine. Script is running on the host machine.
194
194
  ```
195
195
  {
196
- 'provision'=>[
197
- {
198
- 'host'=> {type: 'ruby', ..}
199
- },..
196
+ 'provision'=>{
197
+ 'setup' => [
198
+ {type: 'host', ..},
199
+ ..
200
200
  ]
201
201
  ...
202
202
  }
203
203
  ```
204
204
 
205
- * run provision to setup not running container. Run script which can copy/change files in container.
205
+ * run provision to setup created (not running) container.
206
+ Run script to copy/update files in container.
207
+
206
208
  ```
207
209
  {
208
- 'provision'=>[
209
- {
210
- 'setup'=> {type: 'ruby'}
211
- },
212
- ..
210
+ 'provision'=>{
211
+ 'setup'=> [
212
+ {type: 'ruby', <<script_options>>},
213
+ ..
213
214
  ]
214
215
  ...
215
216
  }
216
217
  ```
218
+
217
219
  * run container with `docker run`. Specify env variables, hostname and other options
218
220
  * first provision of container - bootstrap script. Run script from inside running container only once.
219
221
  Script should be located inside container.
220
222
  ```
221
223
  {
222
- 'provision'=>[
223
- {
224
- 'bootstrap'=> {type: 'chef'}
225
- },..
224
+ 'provision'=>{
225
+ 'bootstrap'=> [
226
+ {type: 'chef', ..},
227
+ ..
226
228
  ]
229
+ }
227
230
  ```
228
231
 
229
- * provision to init container. Run script every time after container starts. Script should be located inside container.
232
+ * provision to initialize container.
233
+ Run script every time after container starts. Script should be located inside container.
230
234
  ```
231
235
  {
232
- 'provision'=>[
233
- {
234
- 'init'=> {type: 'chef'}
235
- },..
236
+ 'provision'=>{
237
+ 'init'=> [
238
+ {type: 'chef'},
239
+ ..
236
240
  ]
241
+ }
237
242
  ```
238
243
 
239
244
  * Use lock file to make sure the container does not start until the provision is finished.
@@ -655,28 +660,35 @@ my-test-redis
655
660
 
656
661
 
657
662
 
663
+ # Provision
658
664
 
659
- # Bootstrap
665
+ ## Setup container
660
666
 
661
- * first provision of container
667
+ ### Setup container with shell script
662
668
 
669
+ * run script from the host
663
670
 
664
- ## Provision with chef
671
+ ```
672
+ 'provision' => {
673
+ "setup" => [
674
+ { 'type' => 'shell', 'script' => 'scripts/mysetup.sh', },
675
+ ]
676
+ },
677
+ ```
665
678
 
666
- docker-builder up -s server_name
679
+ * it will run the script
680
+ ```
681
+ scripts/mysetup.sh
682
+ ```
667
683
 
668
- Process:
669
- * docker create with docker options
670
- * entrypoint: /etc/bootstrap
671
- * generate config with node attributes for chef and save it to temp/boostrap-__server__.json
672
- * copy config file to container to /opt/bootstrap/config.json
673
- * docker start
674
- * when container starts it runs /etc/boostrap which
675
- * runs chef-client to provision server first time
684
+ ## Bootstrap container
685
+
686
+ * first provision of container
687
+ * provision scripts run only once
676
688
 
677
689
 
678
690
 
679
- ## Bootstrap with shell script
691
+ ### Bootstrap with shell script
680
692
 
681
693
  * Dockerfile
682
694
 
@@ -691,64 +703,66 @@ RUN chmod +x /opt/bootstrap/bootstrap.sh
691
703
  * config
692
704
 
693
705
  ```
694
- 'install' => {
695
- "bootstrap" => { 'script_type' => 'shell', 'script' => '/opt/bootstrap/bootstrap.sh', },
706
+ 'provision' => {
707
+ "bootstrap" => [
708
+ { 'type' => 'shell', 'script' => '/opt/bootstrap/bootstrap.sh', },
709
+ ]
696
710
  },
697
711
 
698
712
 
699
713
  ```
700
714
 
715
+ ## Provision with chef
701
716
 
717
+ docker-builder up -s server_name
702
718
 
703
- # Run docker container
719
+ Process:
720
+ * docker create with docker options
721
+ * entrypoint: /etc/bootstrap
722
+ * generate config with node attributes for chef and save it to temp/boostrap-__server__.json
723
+ * copy config file to container to /opt/bootstrap/config.json
724
+ * docker start
725
+ * when container starts it runs /etc/bootstrap which
726
+ * runs chef-client to provision server first time
704
727
 
705
- ## Network
706
728
 
707
- * config
708
- ```
709
- 'docker'=> {
710
- ..
711
- 'network': {
712
- default_gateway: '192.168.1.1',
713
- networks: {
714
- {net: 'bridge'}, # default docker bridge
715
- {net: 'mybridge1', ip: '10.1.0.12'},
716
- {net: 'my_overlay1', ip: '51.1.0.15'},
717
- }
718
-
719
- }
720
729
 
721
- }
722
- ```
723
730
 
724
731
 
725
732
 
726
- ## remove default network
733
+ # Network
734
+
735
+ * Docker container can be connected to multiple networks.
736
+ Container has an IP in each network.
737
+
738
+ Docker networks can be created using docker command `docker network create`
739
+
740
+
741
+ Docker-builder allows you to manage networks for your container.
742
+
743
+
727
744
 
728
- remove default network 'bridge'
729
745
 
730
- ```
731
- 'docker'=> {
732
- ..
733
- 'network': {
734
- networks: {
735
- {net: 'bridge', action: 'remove'}, # remove default docker bridge
736
- {net: 'mybridge1', ip: '10.1.0.12'},
737
- {net: 'my_overlay1', ip: '51.1.0.15'},
738
- }
739
- }
740
746
 
741
- }
742
- ```
743
747
 
744
748
  ## multiple networks
745
749
 
750
+
751
+ * connect to multiple networks and specify default gateway
752
+
753
+ define IP in each network.
754
+
755
+ it assumes that networks 'my_bridge1' and 'my_overlay1' exist.
756
+
757
+
746
758
  ```
747
759
  'docker'=> {
748
760
  ..
749
761
  'network': {
762
+ default_gateway: '192.168.1.1',
750
763
  networks: {
751
- {net: 'mybridge1', ip: '10.1.0.12'},
764
+ {net: 'bridge'}, # default docker bridge
765
+ {net: 'my_bridge1', ip: '10.1.0.12'},
752
766
  {net: 'my_overlay1', ip: '51.1.0.15'},
753
767
  }
754
768
 
@@ -757,13 +771,17 @@ remove default network 'bridge'
757
771
  }
758
772
  ```
759
773
 
760
- * example:
774
+ in this example container will be connected to three networks:
775
+ * docker default bridge named 'bridge'
776
+ * custom docker network named 'my_bridge1' with ip='10.1.0.12'
777
+ * custom docker network named 'my_overlay1'
778
+
779
+
761
780
 
762
- * create networks
781
+ create networks:
763
782
  ```
764
- # bridge
765
-
766
- # macvlan
783
+ docker network create --driver bridge --subnet=51.1.0.0/16 --gateway=51.1.0.1 my_bridge1
784
+ docker network create -d macvlan --subnet=10.1.0.0/16 --gateway=10.1.0.1 --ip-range=10.1.12.0/24 -o parent=eth0 my_overlay1
767
785
  ```
768
786
 
769
787
  see docker networks:
@@ -772,18 +790,39 @@ docker network ls
772
790
  ```
773
791
 
774
792
 
775
- in this example container will be connected to three networks:
776
- * docker default bridge named 'bridge'
777
- * custom docker network named 'mybridge1' with ip='10.1.0.12'
778
- * custom docker network named 'my_overlay1'
779
-
780
-
781
-
782
-
783
793
  * check
784
794
  ```
795
+ docker exec -ti mycontainer bash
796
+
785
797
  ip route
786
798
 
799
+ # sample output
787
800
  ...
788
801
 
789
802
  ```
803
+
804
+
805
+ ## remove default Docker bridge network
806
+
807
+
808
+ * Container will be connected to two networks and NOT connected to default Docker network 'bridge'
809
+
810
+ ```
811
+ 'docker'=> {
812
+ ..
813
+ 'network': {
814
+ networks: {
815
+ {net: 'bridge', action: 'remove'}, # remove default docker bridge
816
+ {net: 'mybridge1', ip: '10.1.0.12'},
817
+ {net: 'my_overlay1', ip: '51.1.0.15'},
818
+ }
819
+ }
820
+
821
+ }
822
+ ```
823
+
824
+
825
+ # Examples
826
+
827
+ * [Nginx with Mysql](https://github.com/maxivak/docker-nginx-mysql-example)
828
+
@@ -0,0 +1,17 @@
1
+
2
+ prefix 'temp-'
3
+ image_prefix ''
4
+ container_prefix ''
5
+ service_prefix ''
6
+
7
+ server 'nginx' do |s|
8
+ s.build = {x:1, y:2}
9
+ s.docker = {a:1, b:2}
10
+
11
+ end
12
+
13
+ server 'mysql' do |s|
14
+ s.build = {x:1, y:2}
15
+ s.docker = {a:1, b:2}
16
+
17
+ end
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.50
4
+ version: 0.1.55
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-03-14 00:00:00.000000000 Z
11
+ date: 2017-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,62 +64,10 @@ files:
64
64
  - CODE_OF_CONDUCT.md
65
65
  - Gemfile
66
66
  - LICENSE.txt
67
- - Rakefile
67
+ - Rakefile_temp
68
68
  - bin/console
69
69
  - bin/setup
70
70
  - docker-builder.gemspec
71
- - examples/example-apps-php/.chef/knife.rb
72
- - examples/example-apps-php/config.rb
73
- - examples/example-apps-php/servers/apps-php/.chef/knife.rb
74
- - examples/example-apps-php/servers/apps-php/config.rb
75
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/README.md
76
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/metadata.rb
77
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/build.rb
78
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install.rb
79
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_app.rb
80
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_host.rb
81
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/index.html.erb
82
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb
83
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb.1
84
- - examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/default.conf.erb
85
- - examples/example-apps-php/servers/apps-php/readme.md
86
- - examples/example-apps-php/temp/apps-php.1.json
87
- - examples/example-base-chef/.chef/knife.rb
88
- - examples/example-base-chef/config.rb
89
- - examples/example-base-chef/readme.md
90
- - examples/example-base-chef/servers/my/.chef/knife.rb
91
- - examples/example-base-chef/servers/my/config.rb
92
- - examples/example-base-chef/servers/my/cookbooks/my/README.md
93
- - examples/example-base-chef/servers/my/cookbooks/my/metadata.rb
94
- - examples/example-base-chef/servers/my/cookbooks/my/recipes/build.rb
95
- - examples/example-base-chef/servers/my/cookbooks/my/recipes/install.rb
96
- - examples/example-base-chef/servers/my/cookbooks/my/recipes/install_host.rb
97
- - examples/example-base-chef/servers/my/readme.md
98
- - examples/example-kafka-zookeeper/config.rb
99
- - examples/example-kafka-zookeeper/servers/kafka/Dockerfile
100
- - examples/example-kafka-zookeeper/servers/kafka/README.md
101
- - examples/example-kafka-zookeeper/servers/kafka/files/LICENSE
102
- - examples/example-kafka-zookeeper/servers/kafka/files/broker-list.sh
103
- - examples/example-kafka-zookeeper/servers/kafka/files/create-topics.sh
104
- - examples/example-kafka-zookeeper/servers/kafka/files/download-kafka.sh
105
- - examples/example-kafka-zookeeper/servers/kafka/files/start-kafka-shell.sh
106
- - examples/example-kafka-zookeeper/servers/kafka/files/start-kafka.sh
107
- - examples/example-nginx/config.rb
108
- - examples/example-nginx/servers/nginx/.chef/knife.rb
109
- - examples/example-nginx/servers/nginx/config.rb
110
- - examples/example-nginx/servers/nginx/cookbooks/nginx/README.md
111
- - examples/example-nginx/servers/nginx/cookbooks/nginx/metadata.rb
112
- - examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/build.rb
113
- - examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install.rb
114
- - examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install_host.rb
115
- - examples/example-nginx/servers/nginx/cookbooks/nginx/templates/index.html.erb
116
- - examples/example-nginx/servers/nginx/cookbooks/nginx/templates/nginx-sites/default.conf.erb
117
- - examples/example-nginx/servers/nginx/readme.md
118
- - examples/example-nginx/servers/nginx/scripts/install.sh
119
- - examples/example-nginx/temp/ex_nginx.json
120
- - examples/example-nginx/temp/nginx.json
121
- - examples/example-swarm-redis/config.rb
122
- - examples/example-swarm-redis/readme.md
123
71
  - exe/docker-builder
124
72
  - install_local.sh
125
73
  - lib/docker_builder.rb
@@ -150,11 +98,12 @@ files:
150
98
  - lib/docker_builder/cookbooks/docker-builder/recipes/install_container.rb
151
99
  - lib/docker_builder/cookbooks/docker-builder/recipes/provision_container.rb
152
100
  - lib/docker_builder/cookbooks/docker-builder/resources/mycontainer.rb
153
- - lib/docker_builder/manager.rb
101
+ - lib/docker_builder/manager_container.rb
102
+ - lib/docker_builder/manager_image.rb
154
103
  - lib/docker_builder/manager_swarm.rb
155
- - lib/docker_builder/provisioner/provisioner_chef.rb
104
+ - lib/docker_builder/provisioner/base.rb
105
+ - lib/docker_builder/provisioner/chef.rb
156
106
  - lib/docker_builder/server_settings.rb
157
- - lib/docker_builder/temp.rb
158
107
  - lib/docker_builder/version.rb
159
108
  - lib/templates/example-chef/.chef/knife.rb
160
109
  - lib/templates/example-chef/config.rb.erb
@@ -178,6 +127,7 @@ files:
178
127
  - temp/cookbooks/temp1/metadata.rb
179
128
  - temp/cookbooks/temp1/recipes/build.rb
180
129
  - temp/run.sh
130
+ - temp_config.rb
181
131
  homepage: https://github.com/maxivak/docker-builder
182
132
  licenses:
183
133
  - MIT
@@ -1,6 +0,0 @@
1
- puts "cookbooks from server: #{cookbook_path}"
2
-
3
- cookbook_path cookbook_path+[
4
- '/work/chef-repo/cookbooks-common',
5
- '/work/chef-repo/cookbooks',
6
- ]
@@ -1,19 +0,0 @@
1
- common({
2
- 'prefix' => "example-",
3
- 'image_prefix' => 'example-',
4
- 'dir_data' => '/disk3/data/my-examples/',
5
-
6
- })
7
-
8
- servers({
9
-
10
- 'apps-php'=>{
11
- # some server options here
12
- }
13
-
14
- })
15
-
16
-
17
- base({
18
-
19
- })