docker-builder 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/docker_builder/chef/bootstrap_local.sh +3 -0
- data/lib/docker_builder/chef/chef_build_image.rb +60 -0
- data/lib/docker_builder/chef/chef_destroy_container.rb +13 -0
- data/lib/docker_builder/chef/chef_destroy_image.rb +29 -0
- data/lib/docker_builder/chef/chef_exec_container.rb +16 -0
- data/lib/docker_builder/chef/chef_run_container.rb +64 -0
- data/lib/docker_builder/chef/config.json +42 -0
- data/lib/docker_builder/chef/config_run_install_container_service.json +5 -0
- data/lib/docker_builder/chef/install_container_service.rb +14 -0
- data/lib/docker_builder/version.rb +1 -1
- data/readme.md +16 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc243843b1db3da7d4895c18e78161dc9c6c8abe
|
4
|
+
data.tar.gz: 55b78014c237a2c8b979d0a797eb0cd20d2e5fcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27d070bd46df8f03b12c83ec6e715ebba0be10d2f514194ca8de854f648a080d032a942fd5348fea798164050242e4e719d38d61db0ada3cea1216493c30cb8b
|
7
|
+
data.tar.gz: aa2d32b30d035ef5af61346c070f4a19d310b765e9c5f0718035251a1c2d6e2f4924640138b988e3185546fa1ad659aafe598eb4455dbae00381b1710c406da5
|
@@ -0,0 +1,60 @@
|
|
1
|
+
base_dir = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
#puts "dir=#{base_dir}"
|
4
|
+
|
5
|
+
#
|
6
|
+
require 'chef/provisioning'
|
7
|
+
|
8
|
+
#
|
9
|
+
server_name = ENV['SERVER_NAME']
|
10
|
+
#puts "server: #{server_name}"
|
11
|
+
#puts "node: #{node['docker'].inspect}"
|
12
|
+
#exit
|
13
|
+
|
14
|
+
|
15
|
+
# settings
|
16
|
+
docker_options = {
|
17
|
+
base_image: node['build']['base_image'],
|
18
|
+
#base_image: 'nginx:1.10',
|
19
|
+
privileged: true,
|
20
|
+
command: node['docker']['command'] || '',
|
21
|
+
#command: "nginx -g 'daemon off;'",
|
22
|
+
#command: "",
|
23
|
+
|
24
|
+
}
|
25
|
+
|
26
|
+
#puts "image = #{settings.image_name}"
|
27
|
+
#puts "opt = #{docker_options}"
|
28
|
+
#exit
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
### docker image
|
35
|
+
with_driver 'docker'
|
36
|
+
machine_image node['base']['image_name'] do
|
37
|
+
action :create
|
38
|
+
|
39
|
+
#tag '0.1'
|
40
|
+
|
41
|
+
recipe "#{server_name}::build"
|
42
|
+
|
43
|
+
# attributes
|
44
|
+
#node.keys.each do |k|
|
45
|
+
# attribute k, node[k]
|
46
|
+
#end
|
47
|
+
|
48
|
+
# attributes
|
49
|
+
node['attributes'].keys.each do |k|
|
50
|
+
attribute k, node['attributes'][k]
|
51
|
+
end
|
52
|
+
|
53
|
+
#
|
54
|
+
machine_options docker_options: docker_options
|
55
|
+
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
base_dir = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
#
|
4
|
+
require 'chef/provisioning'
|
5
|
+
|
6
|
+
#
|
7
|
+
server_name = ENV['SERVER_NAME']
|
8
|
+
|
9
|
+
|
10
|
+
# settings
|
11
|
+
docker_options = {
|
12
|
+
base_image: node['build']['base_image'],
|
13
|
+
privileged: true,
|
14
|
+
command: node['docker']['command'] || '',
|
15
|
+
#ports: settings.docker_ports_array,
|
16
|
+
#volumes: settings.docker_volumes_array,
|
17
|
+
#links: settings.docker_links_array
|
18
|
+
}
|
19
|
+
|
20
|
+
#puts "image = #{settings.image_name}"
|
21
|
+
#puts "opt = #{docker_options}"
|
22
|
+
|
23
|
+
|
24
|
+
### docker image
|
25
|
+
with_driver 'docker'
|
26
|
+
machine_image node['base']['image_name'] do
|
27
|
+
action :destroy
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
base_dir = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
# settings
|
4
|
+
require_relative 'lib/settings'
|
5
|
+
#
|
6
|
+
server_name = ENV['SERVER_NAME']
|
7
|
+
settings = Settings.load_settings_for_server(server_name)
|
8
|
+
|
9
|
+
#
|
10
|
+
include_recipe 'docker'
|
11
|
+
|
12
|
+
docker_exec 'touch_it' do
|
13
|
+
container settings.container_name
|
14
|
+
command ['touch', '/tmp/2.txt']
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
base_dir = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
#
|
4
|
+
require 'chef/provisioning'
|
5
|
+
|
6
|
+
#
|
7
|
+
server_name = ENV['SERVER_NAME']
|
8
|
+
|
9
|
+
# settings
|
10
|
+
docker_options = {
|
11
|
+
base_image: node['base']['image_name'],
|
12
|
+
privileged: true,
|
13
|
+
command: node['docker']['command'] || '',
|
14
|
+
ports: node['docker']['ports'].map{|d| "#{d[0]}:#{d[1]}"},
|
15
|
+
volumes: node['docker']['volumes'].map{|d| "#{d[0]}:#{d[1]}"},
|
16
|
+
links: node['docker']['links'].map{|d| "#{d[0]}:#{d[1]}"},
|
17
|
+
|
18
|
+
}
|
19
|
+
|
20
|
+
# more options
|
21
|
+
docker_options['hostname'] = node['docker']['hostname'] if node['docker']['hostname']
|
22
|
+
|
23
|
+
|
24
|
+
#puts "opt = #{docker_options}"
|
25
|
+
#puts "volumes = #{node['docker']['volumes']}"
|
26
|
+
#exit
|
27
|
+
|
28
|
+
# init volumes
|
29
|
+
node['docker']['volumes'].each do |d|
|
30
|
+
directory "#{d[0]}" do
|
31
|
+
recursive true
|
32
|
+
|
33
|
+
action :create
|
34
|
+
|
35
|
+
mode '0775'
|
36
|
+
#owner 'root'
|
37
|
+
#group 'root'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
### docker container
|
44
|
+
with_driver 'docker'
|
45
|
+
machine node['base']['container_name'] do
|
46
|
+
#tag '0.1'
|
47
|
+
|
48
|
+
recipe "#{server_name}::install"
|
49
|
+
|
50
|
+
# attributes
|
51
|
+
#node.keys.each do |k|
|
52
|
+
# attribute k, node[k]
|
53
|
+
#end
|
54
|
+
|
55
|
+
# attributes
|
56
|
+
node['attributes'].keys.each do |k|
|
57
|
+
attribute k, node['attributes'][k]
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
machine_options docker_options: docker_options
|
62
|
+
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
{
|
2
|
+
"base":{
|
3
|
+
"dir_servers": "/disk2/servers",
|
4
|
+
"dir_server": "/disk2/servers/server-api",
|
5
|
+
"user": "gex",
|
6
|
+
"password": "Galactic1"
|
7
|
+
},
|
8
|
+
"dir_data": "/disk2/data",
|
9
|
+
"git_repo": "git@dev.gex:mmx/my-servers.git",
|
10
|
+
"api":{
|
11
|
+
"host": "devapi.gex",
|
12
|
+
"ip": "51.1.0.50"
|
13
|
+
},
|
14
|
+
"redis":{
|
15
|
+
"docker":{
|
16
|
+
"name": "api-redis",
|
17
|
+
"command": "redis-server",
|
18
|
+
"ports": ["6379:6379"],
|
19
|
+
"base_image": "redis",
|
20
|
+
"base_image_tag": "3.2.3"
|
21
|
+
},
|
22
|
+
"attributes":{
|
23
|
+
|
24
|
+
}
|
25
|
+
|
26
|
+
},
|
27
|
+
"elasticsearch":{
|
28
|
+
"docker":{
|
29
|
+
"name": "api-elasticsearch",
|
30
|
+
"command": "elasticsearch",
|
31
|
+
"entrypoint": "/docker-entrypoint.sh",
|
32
|
+
"ports": ["9200:9200", "9300:9300"],
|
33
|
+
"base_image": "elasticsearch",
|
34
|
+
"base_image_tag": "2.3.5"
|
35
|
+
},
|
36
|
+
"attributes":{
|
37
|
+
|
38
|
+
}
|
39
|
+
|
40
|
+
}
|
41
|
+
|
42
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
base_dir = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
#
|
4
|
+
require_relative 'lib/settings'
|
5
|
+
|
6
|
+
#
|
7
|
+
server_name = ENV['SERVER_NAME']
|
8
|
+
settings = Settings.load_settings_for_server(server_name)
|
9
|
+
#puts "ss = #{settings.attributes}"
|
10
|
+
#puts "container name = #{settings.container_name}"
|
11
|
+
|
12
|
+
|
13
|
+
# create systemd service
|
14
|
+
include_recipe 'server-api::install_container_service'
|
data/readme.md
CHANGED
@@ -136,7 +136,22 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
136
136
|
|
137
137
|
|
138
138
|
|
139
|
-
#
|
139
|
+
# Configuration
|
140
|
+
|
141
|
+
* edit config.rb in your root folder
|
142
|
+
|
143
|
+
You can put all settings in this config.rb file and/or use config.rb file in each server's folder.
|
144
|
+
|
145
|
+
Config files:
|
146
|
+
```
|
147
|
+
/path/to/project/config.rb
|
148
|
+
/path/to/project/servers/server1/config.rb
|
149
|
+
/path/to/project/servers/server2/config.rb
|
150
|
+
```
|
151
|
+
|
152
|
+
|
153
|
+
## config.rb
|
154
|
+
|
140
155
|
|
141
156
|
* CHEF_COOKBOOKS - list of paths to chef cookbooks
|
142
157
|
|
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.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Ivak
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -109,8 +109,17 @@ files:
|
|
109
109
|
- install_local.sh
|
110
110
|
- lib/docker_builder.rb
|
111
111
|
- lib/docker_builder/chef/.chef/knife.rb
|
112
|
+
- lib/docker_builder/chef/bootstrap_local.sh
|
112
113
|
- lib/docker_builder/chef/chef_build_image.copy0.rb
|
114
|
+
- lib/docker_builder/chef/chef_build_image.rb
|
115
|
+
- lib/docker_builder/chef/chef_destroy_container.rb
|
113
116
|
- lib/docker_builder/chef/chef_destroy_image.copy0.rb
|
117
|
+
- lib/docker_builder/chef/chef_destroy_image.rb
|
118
|
+
- lib/docker_builder/chef/chef_exec_container.rb
|
119
|
+
- lib/docker_builder/chef/chef_run_container.rb
|
120
|
+
- lib/docker_builder/chef/config.json
|
121
|
+
- lib/docker_builder/chef/config_run_install_container_service.json
|
122
|
+
- lib/docker_builder/chef/install_container_service.rb
|
114
123
|
- lib/docker_builder/cli.rb
|
115
124
|
- lib/docker_builder/config.rb
|
116
125
|
- lib/docker_builder/config/dsl.rb
|