我有一个应用程序,可以通过其Docker容器部署到Heroku。几次我的Dockerfile已经超过40层。每次发生这种情况时,我的应用都会拒绝启动,只是显示为“崩溃”状态。 (相同的图像可以使容器在本地正常运行。)
我相信他们的CS有时会建议将我的计数降低到40层以下。果然,当层数为40或更少时,应用程序将正常启动。除了合并一些命令以减少层数外,我实际上什么也没做。
任何人都可以阐明为何Heroku具有这样的无证层限制吗?
答案 0 :(得分:2)
此约束实际上记录在here中。
主要原因是,在引擎盖下,Heroku并未运行Docker Daemon(至少在2019年初)。他们下载每个docker层并将其转换为LXC容器,这就是平台上的所有dyno。
约40层的限制是由于内部超时而引起的,因为要下载更多的层才能启动dyno,内部超时的可能性要高得多。
这是一个近似约束,因为它还取决于所有这些图层的大小。