Heroku的Docker应用程序在超过40层启动时崩溃

时间:2019-02-07 07:12:13

标签: docker heroku

我有一个应用程序,可以通过其Docker容器部署到Heroku。几次我的Dockerfile已经超过40层。每次发生这种情况时,我的应用都会拒绝启动,只是显示为“崩溃”状态。 (相同的图像可以使容器在本地正常运行。)

我相信他们的CS有时会建议将我的计数降低到40层以下。果然,当层数为40或更少时,应用程序将正常启动。除了合并一些命令以减少层数外,我实际上什么也没做。

任何人都可以阐明为何Heroku具有这样的无证层限制吗?

1 个答案:

答案 0 :(得分:2)

此约束实际上记录在here中。

主要原因是,在引擎盖下,Heroku并未运行Docker Daemon(至少在2019年初)。他们下载每个docker层并将其转换为LXC容器,这就是平台上的所有dyno。

约40层的限制是由于内部超时而引起的,因为要下载更多的层才能启动dyno,内部超时的可能性要高得多。
这是一个近似约束,因为它还取决于所有这些图层的大小。