docker-builder 0.1.6 → 0.1.7
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/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
|