docker-gem-store 0.2.0 → 0.2.1
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/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +4 -4
- data/lib/docker/gem/store/version.rb +1 -1
- data/lib/docker/gem/store.rb +50 -15
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1df617bfcc53b218dfa276eed905f28d791b108e0510569fe7656c0967fcc0dc
|
|
4
|
+
data.tar.gz: 12534149e5808c67a5c80f81273a258ea62a0223a42ccd77f5c7a277ef7abda9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 837dbb82c0b9d5214733f491af4a010c40885d0f15546d6607b16872f36f3c05a81b35bd50ab572f5e941480a74215235ed653becb30969fb4594e01da1ab9b8
|
|
7
|
+
data.tar.gz: 934f2b91b14c73d15f01ad35863ba2e9aeb4fe9d91352f19d80387d2fc5ae9136ad6a650368087dadbc205f8a91dd049e2a5e806023352e2debef07be3a14db5
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -27,13 +27,13 @@ DockerfileやGemfileに更新内容を記述した後、下記コマンドでDoc
|
|
|
27
27
|
```
|
|
28
28
|
gem-store --build
|
|
29
29
|
```
|
|
30
|
-
|
|
30
|
+
docker hubへpush
|
|
31
31
|
```
|
|
32
|
-
|
|
32
|
+
docker push hogehoge/hugahuga:v1
|
|
33
33
|
```
|
|
34
|
-
|
|
34
|
+
本番環境用にソースコードとgem storeを固めたイメージを作成し、docker-compose.production.ymlを生成(または更新)
|
|
35
35
|
```
|
|
36
|
-
|
|
36
|
+
gem-store --release
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
## License
|
data/lib/docker/gem/store.rb
CHANGED
|
@@ -64,7 +64,7 @@ RUN bundle install
|
|
|
64
64
|
dockerfile_path = Dir.glob("#{Dir.pwd}/dockerfiles/Dockerfile.bundle.*")
|
|
65
65
|
raise "No Dockerfile found" unless File.exists?(DOCKERFILE_PATH)
|
|
66
66
|
|
|
67
|
-
config =
|
|
67
|
+
config = get_config
|
|
68
68
|
stdout, stderr, _ = Open3.capture3("docker build -t #{config['image']} -f #{DOCKERFILE_PATH} #{Dir.pwd}")
|
|
69
69
|
puts stdout
|
|
70
70
|
puts stderr if stderr
|
|
@@ -72,9 +72,33 @@ RUN bundle install
|
|
|
72
72
|
# Gemfile.lockのコピー
|
|
73
73
|
stdout, stderr, _ = Open3.capture3("docker run --rm #{config['image']} cat /gems/Gemfile.lock > #{Dir.pwd}/Gemfile.lock")
|
|
74
74
|
puts stderr if stderr
|
|
75
|
-
|
|
75
|
+
|
|
76
|
+
tag = tagging('development')
|
|
77
|
+
|
|
78
|
+
create_or_update_docker_compose_file('development')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def self.push
|
|
82
|
+
image_name = get_dependent_image_name('development')
|
|
83
|
+
stdout,stderr,_ = Open3.capture3("docker push #{image_name}")
|
|
84
|
+
puts stdout
|
|
85
|
+
puts stderr if stderr
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def self.show_usage
|
|
89
|
+
usage = <<-EOS
|
|
90
|
+
Usage: gem-store [options]
|
|
91
|
+
options:
|
|
92
|
+
--init gem-storeの使用を開始する
|
|
93
|
+
--update Dockerfile.bundleの作成、または更新
|
|
94
|
+
--build イメージのビルドを行い、タグをつける
|
|
95
|
+
--push docker-hubにプッシュする
|
|
96
|
+
--help Usageを表示する
|
|
97
|
+
EOS
|
|
98
|
+
puts usage
|
|
76
99
|
end
|
|
77
100
|
|
|
101
|
+
|
|
78
102
|
def self.release
|
|
79
103
|
private_class_method :release
|
|
80
104
|
if File.exists?(PRODUCTION_DOCKER_COMPOSE_FILE_PATH)
|
|
@@ -85,27 +109,33 @@ RUN bundle install
|
|
|
85
109
|
create_tmp_dockerfile(Dir.pwd,from_image)
|
|
86
110
|
|
|
87
111
|
puts 'イメージのビルド中'
|
|
88
|
-
config =
|
|
112
|
+
config = get_config
|
|
89
113
|
stdout,stderr,_ = Open3.capture3("docker build -t #{config['image']} -f #{TMP_DOCKERFILE_PATH}/ .")
|
|
90
114
|
puts stdout
|
|
91
115
|
puts stderr if stderr
|
|
92
116
|
|
|
93
117
|
tagging('production')
|
|
94
118
|
|
|
95
|
-
|
|
119
|
+
create_or_update_docker_compose_file('production')
|
|
96
120
|
end
|
|
97
121
|
|
|
98
|
-
def self.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
122
|
+
def self.create_or_update_docker_compose_file(env)
|
|
123
|
+
docker_compose_file_path = case env
|
|
124
|
+
when 'development'
|
|
125
|
+
DEVELOPMENT_DOCKER_COMPOSE_FILE_PATH
|
|
126
|
+
when 'production'
|
|
127
|
+
PRODUCTION_DOCKER_COMPOSE_FILE_PATH
|
|
128
|
+
end
|
|
129
|
+
image_name = get_dependent_image_name(env)
|
|
130
|
+
if File.exists?(docker_compose_file_path)
|
|
131
|
+
content = YAML.load_file(docker_compose_file_path)
|
|
102
132
|
content['services']['web']['image'] = image_name
|
|
103
|
-
File.open(
|
|
133
|
+
File.open(docker_compose_file_path,'w') do |file|
|
|
104
134
|
YAML.dump(content,file)
|
|
105
135
|
end
|
|
106
136
|
else
|
|
107
137
|
content = {'version' => '3','services' => {'web' => {'image' =>image_name,'tty' => true}}}
|
|
108
|
-
File.open(
|
|
138
|
+
File.open(docker_compose_file_path,'w') do |file|
|
|
109
139
|
YAML.dump(content,file)
|
|
110
140
|
end
|
|
111
141
|
end
|
|
@@ -129,11 +159,12 @@ COPY . /app
|
|
|
129
159
|
def self.tagging(env)
|
|
130
160
|
private_class_method :tagging
|
|
131
161
|
now = Time.now.strftime("%Y%m%d%H%M%S")
|
|
132
|
-
config =
|
|
162
|
+
config = get_config
|
|
133
163
|
tag = "#{config['user']}/#{config['repository']}:#{now}"
|
|
134
164
|
save_dockertag("#{env}",tag)
|
|
135
165
|
`docker tag #{config['image']} #{tag}`
|
|
136
166
|
puts tag
|
|
167
|
+
tag
|
|
137
168
|
end
|
|
138
169
|
|
|
139
170
|
def self.save_dockertag(env,tag)
|
|
@@ -154,8 +185,8 @@ COPY . /app
|
|
|
154
185
|
end
|
|
155
186
|
end
|
|
156
187
|
|
|
157
|
-
def self.
|
|
158
|
-
private_class_method :
|
|
188
|
+
def self.get_config
|
|
189
|
+
private_class_method :get_config
|
|
159
190
|
YAML.load_file(CONFIG_FILE_PATH)
|
|
160
191
|
end
|
|
161
192
|
|
|
@@ -169,8 +200,7 @@ COPY . /app
|
|
|
169
200
|
end
|
|
170
201
|
|
|
171
202
|
def self.run(argv)
|
|
172
|
-
params = argv.getopts("","init","update","build","tagging", "release")
|
|
173
|
-
puts params
|
|
203
|
+
params = argv.getopts("","init","update","build","tagging","push" ,"release","help")
|
|
174
204
|
if params["init"]
|
|
175
205
|
self.init
|
|
176
206
|
elsif params["update"]
|
|
@@ -179,9 +209,14 @@ COPY . /app
|
|
|
179
209
|
self.build
|
|
180
210
|
elsif params["tagging"]
|
|
181
211
|
self.tagging
|
|
212
|
+
elsif params["push"]
|
|
213
|
+
self.push
|
|
182
214
|
elsif params["release"]
|
|
183
215
|
self.release
|
|
216
|
+
elsif params["help"]
|
|
217
|
+
self.show_usage
|
|
184
218
|
else
|
|
219
|
+
self.show_usage
|
|
185
220
|
end
|
|
186
221
|
end
|
|
187
222
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: docker-gem-store
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- sawasaki narumi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-04-
|
|
11
|
+
date: 2018-04-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|