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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d02a17a0c6b7ba19493c1780ef2f99f918ee650d6c09b55225fc614616b8e46
4
- data.tar.gz: 3c0bb21b8feddc97dac0749239ac5c7b2be1cffe95286bc6c84fcbebf7daa8e5
3
+ metadata.gz: 1df617bfcc53b218dfa276eed905f28d791b108e0510569fe7656c0967fcc0dc
4
+ data.tar.gz: 12534149e5808c67a5c80f81273a258ea62a0223a42ccd77f5c7a277ef7abda9
5
5
  SHA512:
6
- metadata.gz: cba1513da98aa25cd0ae95d636f3f717626d4f8d7db0e3ab448ab1bebb2f3e7a89967bef7835759f097e300c04c1f736b2c7d7f735ad7d0edf054d9ff0692842
7
- data.tar.gz: '04849ed853c127d5e4ea978095b8a20585ba05582da18e431039c7dda6d30088f392c7b8414dfdd0807e93ce1905fa387956164d3a474dae0b10f7aee7d394e6'
6
+ metadata.gz: 837dbb82c0b9d5214733f491af4a010c40885d0f15546d6607b16872f36f3c05a81b35bd50ab572f5e941480a74215235ed653becb30969fb4594e01da1ab9b8
7
+ data.tar.gz: 934f2b91b14c73d15f01ad35863ba2e9aeb4fe9d91352f19d80387d2fc5ae9136ad6a650368087dadbc205f8a91dd049e2a5e806023352e2debef07be3a14db5
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /vendor/*
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- docker-gem-store (0.2.0)
4
+ docker-gem-store (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
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
- gem-store --tagging
32
+ docker push hogehoge/hugahuga:v1
33
33
  ```
34
- タグを付けた後、お好みでdockerhubにpushします。
34
+ 本番環境用にソースコードとgem storeを固めたイメージを作成し、docker-compose.production.ymlを生成(または更新)
35
35
  ```
36
- docker push hogehoge/hugahuga:v1
36
+ gem-store --release
37
37
  ```
38
38
 
39
39
  ## License
@@ -1,7 +1,7 @@
1
1
  module Docker
2
2
  module Gem
3
3
  module Store
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
6
6
  end
7
7
  end
@@ -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 = read_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
- tagging('development')
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 = read_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
- create_or_update_production_docker_compose_file
119
+ create_or_update_docker_compose_file('production')
96
120
  end
97
121
 
98
- def self.create_or_update_production_docker_compose_file
99
- image_name = get_dependent_image_name('production')
100
- if File.exists?(PRODUCTION_DOCKER_COMPOSE_FILE_PATH)
101
- content = YAML.load_file(PRODUCTION_DOCKER_COMPOSE_FILE_PATH)
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(PRODUCTION_DOCKER_COMPOSE_FILE_PATH,'w') do |file|
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(PRODUCTION_DOCKER_COMPOSE_FILE_PATH,'w') do |file|
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 = read_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.read_config
158
- private_class_method :read_config
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.0
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-13 00:00:00.000000000 Z
11
+ date: 2018-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler