質問編集履歴

5

追記

2018/07/17 08:31

投稿

mrsekut
mrsekut

スコア6

test CHANGED
File without changes
test CHANGED
@@ -186,6 +186,100 @@
186
186
 
187
187
 
188
188
 
189
+ ## 追加で試してみたこと
190
+
191
+
192
+
193
+ [このサイトなど](https://qiita.com/kakiuchis/items/ee979434796c88117d89)を参考にして、heroku.ymlを追加してみました。
194
+
195
+ ```
196
+
197
+ build:
198
+
199
+ languages:
200
+
201
+ - python
202
+
203
+ packages:
204
+
205
+ - libopencv-dev
206
+
207
+ run:
208
+
209
+ web: flask main.py
210
+
211
+ ```
212
+
213
+
214
+
215
+ これで、先程のcircleciのconfig.ymlのdeployの部分に1行を加えて、以下のようにしました。
216
+
217
+ ```
218
+
219
+ - run:
220
+
221
+ name: Heroku
222
+
223
+ command: |
224
+
225
+ docker build --rm=false -t registry.heroku.com/hoge-project/web .
226
+
227
+ docker login --username=$HEROKU_EMAIL --password=$(heroku auth:token) registry.heroku.com
228
+
229
+ docker push registry.heroku.com/hoge-project/web
230
+
231
+ git push https://heroku:$HEROKU_API_KEY@git.heroku.com/hoge-project.git master
232
+
233
+
234
+
235
+ ```
236
+
237
+ これでcircleciを走らせてみると、エラーなく終了し、herokuを見てみるとactivityが更新されています。
238
+
239
+ `view build log`を見ると以下のような一見成功したかのように見えるログが記録されています。
240
+
241
+
242
+
243
+ ```
244
+
245
+ -----> Python app detected
246
+
247
+ ! The latest version of Python 3 is python-3.6.6 (you are using python-3.6.5, which is unsupported).
248
+
249
+ ! We recommend upgrading by specifying the latest version (python-3.6.6).
250
+
251
+ Learn More: https://devcenter.heroku.com/articles/python-runtimes
252
+
253
+ -----> Installing requirements with pip
254
+
255
+ -----> Discovering process types
256
+
257
+ Procfile declares types -> web
258
+
259
+ -----> Compressing...
260
+
261
+ Done: 43.5M
262
+
263
+ -----> Launching...
264
+
265
+ Released v28
266
+
267
+ https://hoge-project.herokuapp.com/ deployed to Heroku
268
+
269
+ ```
270
+
271
+ しかし、`open app`からアプリケーションのサイトを見てみると、`Applicatoin error`と表示されています。
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
189
283
 
190
284
 
191
285
 

4

書式の改善

2018/07/17 08:31

投稿

mrsekut
mrsekut

スコア6

test CHANGED
File without changes
test CHANGED
@@ -136,7 +136,7 @@
136
136
 
137
137
 
138
138
 
139
- ですので`docker push`したあとに、何かしら`release`するためのコマンドを実行しなければけないのですが、
139
+ ですので**`docker push`したあとに、何かしら`release`するためのコマンドを実行しなければけないと**思うのですが、
140
140
 
141
141
  例えばcircleci上で`heroku container:release web`というコマンドを実行させようとすると、
142
142
 
@@ -178,7 +178,7 @@
178
178
 
179
179
 
180
180
 
181
- `docker push`したあとになにかしら`release`するための設定やコマンドの実行が必要だと思われるのですが、公式ドキュメントやブログなどを見てもそれに該当するものを見つけられなくて困っています。
181
+ **`docker push`したあとになにかしら`release`するための設定やコマンドの実行が必要だと思われる**のですが、公式ドキュメントやブログなどを見てもそれに該当するものを見つけられなくて困っています。
182
182
 
183
183
 
184
184
 

3

書式の改善

2018/07/17 08:21

投稿

mrsekut
mrsekut

スコア6

test CHANGED
@@ -1 +1 @@
1
- CircleCI上でdocker pushしたがHerokuが更新されない
1
+ CircleCI+Docker+Herokuでのデプロイうまくいかない
test CHANGED
@@ -1,14 +1,16 @@
1
1
  初めてCI環境を作っています。
2
2
 
3
- プログラミング歴は約2年くらいですが、バックエンドの知識はあまりなく、Dockerは使ったことはありますが、コマンドのオプションなどはしっかり理解していないレベルです。
3
+ プログラミング歴は約2年ですが、バックエンドの知識はあまりなく、Dockerは使ったことはありますが、コマンドのオプションなどはしっかり理解していないレベルです。
4
4
 
5
5
 
6
6
 
7
7
  # 概要
8
8
 
9
- CircleCI + Docker + Herokuの組み合わせで「githubにpushされたら自動でHerokuにリリースする」という環境を作ろうとしているのですがうまくいきません。
9
+ CircleCI + Docker + Herokuの組み合わせで「githubにpushされたら自動でHerokuにリリースする」という環境を作ろうとしているのですがうまくいきません。
10
+
10
-
11
+ CircleCIの設定ファイルを作り、githubにpushするとちゃんと実行され、
12
+
11
- CircleCIの設定ファイルを作り、pushするとちゃんと実行され、`docker push`まで正常に終わるのですが、Heroku側では何も更新されません。
13
+ `docker push`まで正常に終わるのですが、Heroku側では何も更新されません。
12
14
 
13
15
  エラーも表示されないので、困っています。
14
16
 
@@ -40,8 +42,6 @@
40
42
 
41
43
  手順3まではうまく行っています。
42
44
 
43
- 調べた限りではDockerが絡んでくると、heroku上の「Githubにpushしたら自動リリース」というのはできないっぽいので、手順3でわざわざmasterへpushする処理を記述しています。
44
-
45
45
 
46
46
 
47
47
  # 詰まっているところ
@@ -126,43 +126,21 @@
126
126
 
127
127
 
128
128
 
129
- また、[このサイト](https://qiita.com/attakei/items/cf34e7d6f6e9a9a84bb1)にると、
130
-
131
- > `heroku container:push web`コマンドは、`docker build`,`docker push`,`docker run`を含めてい
132
-
133
-
134
-
135
- といたような記述があります。
136
-
137
- しかし、私のconfig.ymlには`docker run`はしていません。
138
-
139
- ので、Heroku更新がないのかなと推測していま
140
-
141
-
142
-
143
- `docker push`でdocker-hub上(?)にpushされ、その後、release用のコマンドを実行する必要があるのでしょうか。
144
-
145
-
146
-
147
-
148
-
149
- ### 個人的対策その1
150
-
151
-
152
-
153
- 上のymlファイルの続きに
154
-
155
- ```
156
-
157
- heroku container:login
158
-
159
- heroku container:release web
160
-
161
- ```
162
-
163
- を追記しました。
164
-
165
- すると以下のようなログが出ました。
129
+ [このサイト](https://blog.lelonek.me/running-docker-with-heroku-from-circleci-fb9a616cb40)や[このサイト](http://uphy.hatenablog.com/entry/2017/08/15/215703)や[このサイト](https://qiita.com/Kesin11/items/47079bc7f659e71b694c)などを参考ると、
130
+
131
+ circleCI上で`docker push registry.heroku.com/hoge-project/web`のようなコマンド実行すと、
132
+
133
+ pushもreleaseもしてくれるよという感じに読めますが、
134
+
135
+ [2018/5/29に更新されたHerokuのドキュメント](https://devcenter.heroku.com/changelog-items/1426)を見る、`docker push registry.heroku.com`コマンドは今までは、`push`も`release`も包含していたけど、それを分離したあります。
136
+
137
+
138
+
139
+ ですので`docker push`したあと、何かしら`release`するためのコマンドを実行しければ行けないのが、
140
+
141
+ 例えばcircleci上で`heroku container:release web`というコマンドを実行させようとすると、
142
+
143
+
166
144
 
167
145
  ```
168
146
 
@@ -180,13 +158,11 @@
180
158
 
181
159
  ```
182
160
 
183
-
184
-
185
- ローカルでは動く`container:release`ないと怒られます。
161
+ と出て、ローカルでは動く`container:release`なんてコマンドはないと怒られます。
186
-
187
-
188
-
162
+
163
+
164
+
189
- [このページ](https://stackoverflow.com/questions/37892332/containerinit-is-not-a-heroku-command)を見てみると
165
+ [このページ](https://stackoverflow.com/questions/37892332/containerinit-is-not-a-heroku-command)を見てみると以下のように書いてありました。
190
166
 
191
167
  > heroku container:release, which creates a Heroku-compatible slug and deploys it to Heroku, has been deprecated. For access to our container registry (available in private beta), please contact docker-feedback@heroku.com
192
168
 
@@ -202,6 +178,20 @@
202
178
 
203
179
 
204
180
 
181
+ `docker push`したあとになにかしら`release`するための設定やコマンドの実行が必要だと思われるのですが、公式ドキュメントやブログなどを見てもそれに該当するものを見つけられなくて困っています。
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
205
195
  # 余談
206
196
 
207
197
  ちなみにcircleCIを抜きにした「Docker + Heroku + Flask」でローカルで実行したときはうまく行っています。

2

修正

2018/07/17 08:20

投稿

mrsekut
mrsekut

スコア6

test CHANGED
File without changes
test CHANGED
@@ -144,72 +144,42 @@
144
144
 
145
145
 
146
146
 
147
+
148
+
147
149
  ### 個人的対策その1
148
150
 
149
151
 
150
152
 
151
- このエラーが出てから、いくつか調べ、対策してみたのですが、
152
-
153
- そのうちの一つに上のymlファイルの続きに
153
+ 上のymlファイルの続きに
154
-
155
- `docker run registry.heroku.com/hoge-project/web:latest -p 8081:80`を追記してみるということをしました。
154
+
156
-
157
- すると、10000行のログが表示され
158
-
159
- ```
155
+ ```
156
+
160
-
157
+ heroku container:login
158
+
161
- latest: digest: sha256:3466b74a85432aada3338280f92c80661438f20fbeea32a7170bae6b4429e2d4 size: 2832
159
+ heroku container:release web
160
+
162
-
161
+ ```
162
+
163
+ を追記しました。
164
+
165
+ すると以下のようなログが出ました。
166
+
167
+ ```
168
+
169
+ Login Succeeded
170
+
163
- container_linux.go:295: starting container process caused "exec: \"-p\": executable file not found in $PATH"
171
+ container:release is not a heroku command.
164
-
172
+
165
- docker: Error response from daemon: oci runtime error: container_linux.go:295: starting container process caused "exec: \"-p\": executable file not found in $PATH".
173
+ Perhaps you meant container:rm
166
-
174
+
167
- ERRO[0000] error waiting for container: context canceled
175
+ Run heroku help container for a list of available
176
+
177
+ ▸ commands.
168
178
 
169
179
  Exited with code 127
170
180
 
171
181
  ```
172
182
 
173
- と締めくくられました。
174
-
175
- 恐らくオプションの指定の仕方がおかしいかと思われますが、わかりません。
176
-
177
-
178
-
179
- ### 個人的対策その2
180
-
181
-
182
-
183
- 上のymlファイルの続きに
184
-
185
- ```
186
-
187
- heroku container:login
188
-
189
- heroku container:release web
190
-
191
- ```
192
-
193
- を追記しました。
194
-
195
- すると以下のようなログが出ました。
196
-
197
- ```
198
-
199
- Login Succeeded
200
-
201
- ▸ container:release is not a heroku command.
202
-
203
- ▸ Perhaps you meant container:rm
204
-
205
- ▸ Run heroku help container for a list of available
206
-
207
- ▸ commands.
208
-
209
- Exited with code 127
210
-
211
- ```
212
-
213
183
 
214
184
 
215
185
  ローカルでは動く`container:release`がないと怒られます。

1

追記

2018/07/10 07:49

投稿

mrsekut
mrsekut

スコア6

test CHANGED
File without changes
test CHANGED
@@ -116,9 +116,9 @@
116
116
 
117
117
  上に貼り付けたのは、約9000行あるログの最後の6行です。
118
118
 
119
- このようにCircleCI上では正常に終了しているように見えるのですが、Herokuに行き見てみると、何も変わっていません。
119
+ このようにCircleCI上では正常に終了しているように見えるのですが、Herokuにいってみると、何も変わっていません。
120
-
120
+
121
- エラーログもないので、調べようがない状態です。
121
+ エラーログもないので、対策を調べようがない状態です。
122
122
 
123
123
 
124
124
 
@@ -128,7 +128,9 @@
128
128
 
129
129
  また、[このサイト](https://qiita.com/attakei/items/cf34e7d6f6e9a9a84bb1)によると、
130
130
 
131
- `heroku container:push web`コマンドは、`docker build`,`docker push`,`docker run`を含めている。
131
+ > `heroku container:push web`コマンドは、`docker build`,`docker push`,`docker run`を含めている。
132
+
133
+
132
134
 
133
135
  といったような記述があります。
134
136
 
@@ -140,11 +142,19 @@
140
142
 
141
143
  `docker push`でdocker-hub上(?)にpushされ、その後、release用のコマンドを実行する必要があるのでしょうか。
142
144
 
145
+
146
+
147
+ ### 個人的対策その1
148
+
149
+
150
+
151
+ このエラーが出てから、いくつか調べ、対策してみたのですが、
152
+
143
- なみ上のymlファイルの続きに、
153
+ そのうの一つに上のymlファイルの続きに、
144
-
154
+
145
- `docker run registry.heroku.com/hoge-project/web:latest -p 8081:80`を追記してみると
155
+ `docker run registry.heroku.com/hoge-project/web:latest -p 8081:80`を追記してみるということをしました。
146
-
156
+
147
- 10000行のログが表示され
157
+ すると、10000行のログが表示され
148
158
 
149
159
  ```
150
160
 
@@ -166,6 +176,60 @@
166
176
 
167
177
 
168
178
 
179
+ ### 個人的対策その2
180
+
181
+
182
+
183
+ 上のymlファイルの続きに
184
+
185
+ ```
186
+
187
+ heroku container:login
188
+
189
+ heroku container:release web
190
+
191
+ ```
192
+
193
+ を追記しました。
194
+
195
+ すると以下のようなログが出ました。
196
+
197
+ ```
198
+
199
+ Login Succeeded
200
+
201
+ ▸ container:release is not a heroku command.
202
+
203
+ ▸ Perhaps you meant container:rm
204
+
205
+ ▸ Run heroku help container for a list of available
206
+
207
+ ▸ commands.
208
+
209
+ Exited with code 127
210
+
211
+ ```
212
+
213
+
214
+
215
+ ローカルでは動く`container:release`がないと怒られます。
216
+
217
+
218
+
219
+ [このページ](https://stackoverflow.com/questions/37892332/containerinit-is-not-a-heroku-command)を見てみると、
220
+
221
+ > heroku container:release, which creates a Heroku-compatible slug and deploys it to Heroku, has been deprecated. For access to our container registry (available in private beta), please contact docker-feedback@heroku.com
222
+
223
+
224
+
225
+ `container:release`コマンドはなくなったのでしょうか。
226
+
227
+ 後述するようにローカルではこのコマンドは問題なく使えます。
228
+
229
+ なぜ、circleci上では使えないのでしょうか。
230
+
231
+
232
+
169
233
 
170
234
 
171
235
  # 余談