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,5 +0,0 @@
1
- #!/bin/bash
2
-
3
- CONTAINERS=$(docker ps | grep 9092 | awk '{print $1}')
4
- BROKERS=$(for CONTAINER in $CONTAINERS; do docker port $CONTAINER 9092 | sed -e "s/0.0.0.0:/$HOST_IP:/g"; done)
5
- echo $BROKERS | sed -e 's/ /,/g'
@@ -1,32 +0,0 @@
1
- #!/bin/bash
2
-
3
-
4
- if [[ -z "$START_TIMEOUT" ]]; then
5
- START_TIMEOUT=600
6
- fi
7
-
8
- start_timeout_exceeded=false
9
- count=0
10
- step=10
11
- while netstat -lnt | awk '$4 ~ /:'$KAFKA_PORT'$/ {exit 1}'; do
12
- echo "waiting for kafka to be ready"
13
- sleep $step;
14
- count=$(expr $count + $step)
15
- if [ $count -gt $START_TIMEOUT ]; then
16
- start_timeout_exceeded=true
17
- break
18
- fi
19
- done
20
-
21
- if $start_timeout_exceeded; then
22
- echo "Not able to auto-create topic (waited for $START_TIMEOUT sec)"
23
- exit 1
24
- fi
25
-
26
- if [[ -n $KAFKA_CREATE_TOPICS ]]; then
27
- IFS=','; for topicToCreate in $KAFKA_CREATE_TOPICS; do
28
- echo "creating topics: $topicToCreate"
29
- IFS=':' read -a topicConfig <<< "$topicToCreate"
30
- JMX_PORT='' $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper $KAFKA_ZOOKEEPER_CONNECT --replication-factor ${topicConfig[2]} --partition ${topicConfig[1]} --topic "${topicConfig[0]}"
31
- done
32
- fi
@@ -1,5 +0,0 @@
1
- #!/bin/sh
2
-
3
- mirror=$(curl --stderr /dev/null https://www.apache.org/dyn/closer.cgi\?as_json\=1 | jq -r '.preferred')
4
- url="${mirror}kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz"
5
- wget -q "${url}" -O "/tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz"
@@ -1,2 +0,0 @@
1
- #!/bin/bash
2
- docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e HOST_IP=$1 -e ZK=$2 -i -t wurstmeister/kafka /bin/bash
@@ -1,67 +0,0 @@
1
- #!/bin/bash
2
-
3
- if [[ -z "$KAFKA_PORT" ]]; then
4
- export KAFKA_PORT=9092
5
- fi
6
- if [[ -z "$KAFKA_ADVERTISED_PORT" ]]; then
7
- export KAFKA_ADVERTISED_PORT=$(docker port `hostname` $KAFKA_PORT | sed -r "s/.*:(.*)/\1/g")
8
- fi
9
- if [[ -z "$KAFKA_BROKER_ID" ]]; then
10
- # By default auto allocate broker ID
11
- export KAFKA_BROKER_ID=-1
12
- fi
13
- if [[ -z "$KAFKA_LOG_DIRS" ]]; then
14
- export KAFKA_LOG_DIRS="/kafka/kafka-logs-$HOSTNAME"
15
- fi
16
- if [[ -z "$KAFKA_ZOOKEEPER_CONNECT" ]]; then
17
- export KAFKA_ZOOKEEPER_CONNECT=$(env | grep ZK.*PORT_2181_TCP= | sed -e 's|.*tcp://||' | paste -sd ,)
18
- fi
19
-
20
- if [[ -n "$KAFKA_HEAP_OPTS" ]]; then
21
- sed -r -i "s/(export KAFKA_HEAP_OPTS)=\"(.*)\"/\1=\"$KAFKA_HEAP_OPTS\"/g" $KAFKA_HOME/bin/kafka-server-start.sh
22
- unset KAFKA_HEAP_OPTS
23
- fi
24
-
25
- if [[ -z "$KAFKA_ADVERTISED_HOST_NAME" && -n "$HOSTNAME_COMMAND" ]]; then
26
- export KAFKA_ADVERTISED_HOST_NAME=$(eval $HOSTNAME_COMMAND)
27
- fi
28
-
29
- for VAR in `env`
30
- do
31
- if [[ $VAR =~ ^KAFKA_ && ! $VAR =~ ^KAFKA_HOME ]]; then
32
- kafka_name=`echo "$VAR" | sed -r "s/KAFKA_(.*)=.*/\1/g" | tr '[:upper:]' '[:lower:]' | tr _ .`
33
- env_var=`echo "$VAR" | sed -r "s/(.*)=.*/\1/g"`
34
- if egrep -q "(^|^#)$kafka_name=" $KAFKA_HOME/config/server.properties; then
35
- sed -r -i "s@(^|^#)($kafka_name)=(.*)@\2=${!env_var}@g" $KAFKA_HOME/config/server.properties #note that no config values may contain an '@' char
36
- else
37
- echo "$kafka_name=${!env_var}" >> $KAFKA_HOME/config/server.properties
38
- fi
39
- fi
40
- done
41
-
42
- if [[ -n "$CUSTOM_INIT_SCRIPT" ]] ; then
43
- eval $CUSTOM_INIT_SCRIPT
44
- fi
45
-
46
-
47
- KAFKA_PID=0
48
-
49
- # see https://medium.com/@gchudnov/trapping-signals-in-docker-containers-7a57fdda7d86#.bh35ir4u5
50
- term_handler() {
51
- echo 'Stopping Kafka....'
52
- if [ $KAFKA_PID -ne 0 ]; then
53
- kill -s TERM "$KAFKA_PID"
54
- wait "$KAFKA_PID"
55
- fi
56
- echo 'Kafka stopped.'
57
- exit
58
- }
59
-
60
-
61
- # Capture kill requests to stop properly
62
- trap "term_handler" SIGHUP SIGINT SIGTERM
63
- create-topics.sh &
64
- $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &
65
- KAFKA_PID=$!
66
-
67
- wait
@@ -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
- 'nginx'=>{
10
- # some server options here
11
- },
12
-
13
-
14
- })
15
-
16
-
17
- base({
18
-
19
- })
@@ -1,8 +0,0 @@
1
- #node_name ENV["NODE_NAME"] || ENV['SERVER_NAME'] || 'nginx-front'
2
-
3
- # cookbooks
4
- cookbook_path [
5
- File.expand_path("../cookbooks", __FILE__)
6
- ]
7
-
8
-
@@ -1,55 +0,0 @@
1
-
2
- add 'build', {
3
- "image_name" => "nginx",
4
- 'build_type' => 'chef',
5
-
6
- "base_image" => {
7
- "name" => "nginx",
8
- "repository" => "nginx",
9
- "tag" => "1.10"
10
-
11
- },
12
-
13
- }
14
-
15
- add 'install', {
16
- "host" => {
17
- 'script_type' => 'chef_recipe',
18
- 'script' => 'install_host',
19
- },
20
- "node" => {
21
- #'script_type' => 'chef_recipe',
22
- 'script_type' => 'shell',
23
- #'script' => 'install',
24
- }
25
-
26
-
27
- }
28
-
29
-
30
- add 'docker', {
31
- #'command' => "/sbin/my_init",
32
- "command"=> "nginx -g 'daemon off;'",
33
- #"command"=> "",
34
- 'ports' => [
35
- [8080,80],
36
- ],
37
- 'volumes' => [
38
- ['html', '/usr/share/nginx/html'],
39
- ['log/nginx', '/var/log/nginx/'],
40
- ],
41
- 'links' => [
42
- ]
43
- }
44
-
45
-
46
-
47
- add 'attributes', {
48
- 'nginx' =>{
49
- "sitename" =>"mysite.local"
50
- },
51
-
52
-
53
- }
54
-
55
-
@@ -1,9 +0,0 @@
1
- name 'nginx'
2
- maintainer 'YOUR_COMPANY_NAME'
3
- maintainer_email 'YOUR_EMAIL'
4
- license 'All rights reserved'
5
- description 'Nginx server'
6
- long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
7
- version '0.1.0'
8
-
9
- #depends "apt"
@@ -1,10 +0,0 @@
1
- # will be added to Docker image
2
-
3
-
4
- file '/tmp/example-nginx.txt' do
5
- content '555'
6
- end
7
-
8
-
9
-
10
-
@@ -1,28 +0,0 @@
1
-
2
- ## nginx default server
3
- template "/etc/nginx/conf.d/default.conf" do
4
- source "nginx-sites/default.conf.erb"
5
-
6
- #owner 'root'
7
- #group 'root'
8
-
9
- mode '0775'
10
- end
11
-
12
-
13
-
14
-
15
-
16
-
17
- #
18
- bash 'reload nginx' do
19
- code <<-EOH
20
- service nginx reload
21
- EOH
22
-
23
- ignore_failure true
24
- end
25
-
26
-
27
- #command '/etc/init.d/nginx reload'
28
-
@@ -1,9 +0,0 @@
1
- # will be run on the host machine
2
-
3
- file '/tmp/example-nginx-intalled.txt' do
4
- content '22'
5
- end
6
-
7
-
8
-
9
-
@@ -1,4 +0,0 @@
1
- Placeholder for a home page.
2
- <br>
3
- site:
4
- <%=node['nginx']['sitename'] %>
@@ -1,45 +0,0 @@
1
- server {
2
- listen 80;
3
- server_name localhost <%=node['nginx']['sitename']%> ;
4
-
5
- #charset koi8-r;
6
- #access_log /var/log/nginx/log/access.log main;
7
-
8
- location / {
9
- root /usr/share/nginx/html;
10
- index index.html index.htm;
11
- }
12
-
13
- #error_page 404 /404.html;
14
-
15
- # redirect server error pages to the static page /50x.html
16
- #
17
- error_page 500 502 503 504 /50x.html;
18
- location = /50x.html {
19
- root /usr/share/nginx/html;
20
- }
21
-
22
- # proxy the PHP scripts to Apache listening on 127.0.0.1:80
23
- #
24
- #location ~ \.php$ {
25
- # proxy_pass http://127.0.0.1;
26
- #}
27
-
28
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
29
- #
30
- #location ~ \.php$ {
31
- # root html;
32
- # fastcgi_pass 127.0.0.1:9000;
33
- # fastcgi_index index.php;
34
- # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
35
- # include fastcgi_params;
36
- #}
37
-
38
- # deny access to .htaccess files, if Apache's document root
39
- # concurs with nginx's one
40
- #
41
- #location ~ /\.ht {
42
- # deny all;
43
- #}
44
- }
45
-
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- echo '1' > /tmp/1.txt
@@ -1,20 +0,0 @@
1
- {
2
- "build":{
3
- "image_name":"nginx","build_type":"chef", "base_image":{"name":"nginx","repository":"nginx","tag":"1.10"}
4
- },
5
-
6
- "install":{
7
- "host":{"script_type":"chef_recipe","script":"install_host"},
8
- "node":{"script_type":"chef_recipe","script":"install"}
9
- },
10
- "docker": {
11
- "command":"nginx -g 'daemon off;'","ports":[[8080,80]],
12
- "volumes":[["html","/usr/share/nginx/html"],["log/nginx","/var/log/nginx/"]],"links":[]
13
- },
14
-
15
- "attributes":{
16
- "nginx":{"sitename":"mysite.local"}},"name":"nginx","common":{"prefix":"example-","image_prefix":"example-","dir_data":"/disk3/data/my-examples/"
17
- },
18
-
19
- "base":{"image_name":"example-nginx"}
20
- }
@@ -1 +0,0 @@
1
- {"build":{"image_name":"nginx","build_type":"chef","base_image":{"name":"nginx","repository":"nginx","tag":"1.10"}},"install":{"host":{"script_type":"chef_recipe","script":"install_host"},"node":{"script_type":"chef_recipe","script":"install"}},"docker":{"command":"nginx -g 'daemon off;'","ports":[[8080,80]],"volumes":[["/disk3/data/my-examples/nginx/html","/usr/share/nginx/html"],["/disk3/data/my-examples/nginx/log/nginx","/var/log/nginx/"]],"links":[]},"attributes":{"nginx":{"sitename":"mysite.local"}},"name":"nginx","common":{"prefix":"example-","image_prefix":"example-","dir_data":"/disk3/data/my-examples/"},"base":{"image_name":"example-nginx","container_name":"example-nginx"}}
@@ -1,61 +0,0 @@
1
- common({
2
- 'prefix' => "example-",
3
- 'image_prefix' => 'example-',
4
- 'dir_data' => '/disk3/data/my-examples/',
5
-
6
- })
7
-
8
- servers({
9
- 'redis'=>{
10
-
11
- 'build' => {
12
- "image_name" => "redis",
13
- 'build_type' => 'none',
14
-
15
- "base_image" => {
16
- "name" => "redis",
17
- "repository" => "redis",
18
- "tag" => "3.2.4"
19
-
20
- },
21
-
22
- },
23
-
24
- 'install'=> {
25
- },
26
-
27
- 'docker'=> {
28
- #"command"=> "",
29
- 'ports' => [
30
- [6379,80],
31
- ],
32
- 'volumes' => [
33
- ],
34
- 'links' => [
35
- ],
36
-
37
- # network
38
- #"ip"=>"10.1.0.144",
39
- #"net"=> "pub_net",
40
-
41
- # for swarm
42
- "swarm_network"=> "pub_net",
43
- #"swarm_options" => ""
44
- "swarm_options" => "--replicas=1 --restart-max-attempts=1"
45
- #"swarm_options" => "-e constraint:node==mmxpc "
46
- # --net=pub_net --ip=10.1.0.131
47
-
48
- },
49
-
50
- 'attributes'=> {
51
- }
52
-
53
- }, # / redis
54
-
55
-
56
- })
57
-
58
-
59
- base({
60
-
61
- })
@@ -1,10 +0,0 @@
1
- * create swarm and network
2
- docker swarm init ...
3
-
4
-
5
- * run in swarm mode
6
-
7
- docker-builder up_swarm -s redis
8
-
9
- * destroy
10
- docker-builder up_swarm -s redis
@@ -1 +0,0 @@
1
-