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,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
-