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