LoginSignup
0
0

More than 3 years have passed since last update.

Herokuではレイヤー数が多過ぎるとDockerイメージが動かない

Posted at

Herokuの Container Registry でDockerイメージが動かなくてハマったので後世のために記しておきます。

結論から言うと、Dockerイメージのレイヤーー数が40を超えるとHeroku上では動かせません(2020年2月9日時点)。レイヤー数40の制限の詳細な仕様、実装がどうなっているのかは分かりませんが、40近い命令数になると起こりうると注意した方がよいかと。

Images with more than 40 layers may fail to start in the Common Runtime

レイヤー数はDockerファイルに記載されている命令数に依存するのでとにかく命令数を減らすしかありません。
特に RUN 命令はまとめましょう。
なお、Dockerファイルに記載していた命令数は39でしたが、この制限に引っ掛かていたようです。
最終的には31まで命令数を減らして対応しました。

Dockerイメージが動かない時の症例

heroku run bash

heroku run bash で接続を試みると以下の状態のまま動かなくなる。

$ heroku run bash --type=worker --app [APP_NAME]
Running bash on ⬢ [APP_NAME]... connecting, worker.7390 (Standard-1X)

Heroku Scheduler

Heroku Scheduler でイメージ上のアプリケーションを実行しようとすると、以下のログが出るだけで実行されない。

Jan 28 13:12:00 [APP_NAME] app/api: Starting process with command [COMMAND] by user scheduler@addons.heroku.com
Jan 28 13:12:26 [APP_NAME] heroku/scheduler.8466: State changed from starting to complete
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0