docker-builder 0.1.50 → 0.1.55

Sign up to get free protection for your applications and to get access to all the features.
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
- })