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.
- checksums.yaml +4 -4
- data/{Rakefile → Rakefile_temp} +8 -7
- data/install_local.sh +1 -1
- data/lib/docker_builder.rb +4 -1
- data/lib/docker_builder/cli.rb +23 -56
- data/lib/docker_builder/config.rb +75 -34
- data/lib/docker_builder/config/dsl.rb +17 -1
- data/lib/docker_builder/{manager.rb → manager_container.rb} +25 -308
- data/lib/docker_builder/manager_image.rb +103 -0
- data/lib/docker_builder/provisioner/base.rb +188 -0
- data/lib/docker_builder/provisioner/{provisioner_chef.rb → chef.rb} +5 -1
- data/lib/docker_builder/server_settings.rb +34 -64
- data/lib/docker_builder/version.rb +1 -1
- data/readme.md +118 -79
- data/temp_config.rb +17 -0
- metadata +8 -58
- data/examples/example-apps-php/.chef/knife.rb +0 -6
- data/examples/example-apps-php/config.rb +0 -19
- data/examples/example-apps-php/servers/apps-php/.chef/knife.rb +0 -2
- data/examples/example-apps-php/servers/apps-php/config.rb +0 -69
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/README.md +0 -1
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/metadata.rb +0 -9
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/build.rb +0 -43
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install.rb +0 -55
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_app.rb +0 -27
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_host.rb +0 -9
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/index.html.erb +0 -4
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb +0 -55
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb.1 +0 -55
- data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/default.conf.erb +0 -45
- data/examples/example-apps-php/servers/apps-php/readme.md +0 -0
- data/examples/example-apps-php/temp/apps-php.1.json +0 -14
- data/examples/example-base-chef/.chef/knife.rb +0 -6
- data/examples/example-base-chef/config.rb +0 -19
- data/examples/example-base-chef/readme.md +0 -8
- data/examples/example-base-chef/servers/my/.chef/knife.rb +0 -2
- data/examples/example-base-chef/servers/my/config.rb +0 -53
- data/examples/example-base-chef/servers/my/cookbooks/my/README.md +0 -1
- data/examples/example-base-chef/servers/my/cookbooks/my/metadata.rb +0 -9
- data/examples/example-base-chef/servers/my/cookbooks/my/recipes/build.rb +0 -23
- data/examples/example-base-chef/servers/my/cookbooks/my/recipes/install.rb +0 -0
- data/examples/example-base-chef/servers/my/cookbooks/my/recipes/install_host.rb +0 -9
- data/examples/example-base-chef/servers/my/readme.md +0 -0
- data/examples/example-kafka-zookeeper/config.rb +0 -87
- data/examples/example-kafka-zookeeper/servers/kafka/Dockerfile +0 -21
- data/examples/example-kafka-zookeeper/servers/kafka/README.md +0 -78
- data/examples/example-kafka-zookeeper/servers/kafka/files/LICENSE +0 -202
- data/examples/example-kafka-zookeeper/servers/kafka/files/broker-list.sh +0 -5
- data/examples/example-kafka-zookeeper/servers/kafka/files/create-topics.sh +0 -32
- data/examples/example-kafka-zookeeper/servers/kafka/files/download-kafka.sh +0 -5
- data/examples/example-kafka-zookeeper/servers/kafka/files/start-kafka-shell.sh +0 -2
- data/examples/example-kafka-zookeeper/servers/kafka/files/start-kafka.sh +0 -67
- data/examples/example-nginx/config.rb +0 -19
- data/examples/example-nginx/servers/nginx/.chef/knife.rb +0 -8
- data/examples/example-nginx/servers/nginx/config.rb +0 -55
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/README.md +0 -1
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/metadata.rb +0 -9
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/build.rb +0 -10
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install.rb +0 -28
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install_host.rb +0 -9
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/templates/index.html.erb +0 -4
- data/examples/example-nginx/servers/nginx/cookbooks/nginx/templates/nginx-sites/default.conf.erb +0 -45
- data/examples/example-nginx/servers/nginx/readme.md +0 -0
- data/examples/example-nginx/servers/nginx/scripts/install.sh +0 -3
- data/examples/example-nginx/temp/ex_nginx.json +0 -20
- data/examples/example-nginx/temp/nginx.json +0 -1
- data/examples/example-swarm-redis/config.rb +0 -61
- data/examples/example-swarm-redis/readme.md +0 -10
- data/lib/docker_builder/temp.rb +0 -1
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
|
-
|
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.
|
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
|
-
|
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
|
-
|
225
|
-
|
224
|
+
'provision'=>{
|
225
|
+
'bootstrap'=> [
|
226
|
+
{type: 'chef', ..},
|
227
|
+
..
|
226
228
|
]
|
229
|
+
}
|
227
230
|
```
|
228
231
|
|
229
|
-
* provision to
|
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
|
-
|
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
|
-
|
665
|
+
## Setup container
|
660
666
|
|
661
|
-
|
667
|
+
### Setup container with shell script
|
662
668
|
|
669
|
+
* run script from the host
|
663
670
|
|
664
|
-
|
671
|
+
```
|
672
|
+
'provision' => {
|
673
|
+
"setup" => [
|
674
|
+
{ 'type' => 'shell', 'script' => 'scripts/mysetup.sh', },
|
675
|
+
]
|
676
|
+
},
|
677
|
+
```
|
665
678
|
|
666
|
-
|
679
|
+
* it will run the script
|
680
|
+
```
|
681
|
+
scripts/mysetup.sh
|
682
|
+
```
|
667
683
|
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
*
|
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
|
-
|
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
|
-
'
|
695
|
-
"bootstrap" =>
|
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
|
-
|
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
|
-
|
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: '
|
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
|
-
|
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
|
-
|
781
|
+
create networks:
|
763
782
|
```
|
764
|
-
|
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
|
+
|
data/temp_config.rb
ADDED
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.
|
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-
|
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
|
-
-
|
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/
|
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/
|
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
|