我正在推动一个Haskell Web应用程序,该应用程序具有相当多的依赖性,这需要heroku下载并编译所有依赖项。
事情似乎在一段时间之后突然在日志中“停止”。日志突然停在中线,每次都在一个稍微不同的位置
看了heroku logs
后,接收和消息之间的时间似乎开始编译,编译结束之间的时间总是 15分钟(加上几秒钟)。 buildpack运行正常,我过去曾将它用于应用程序。如果我从依赖项中删除所有必需的包,它会尝试编译我的Web应用程序,它的行为与在本地计算机上完全相同(它在抱怨缺少依赖项后停止)。我已经用几乎所有必需的软件包逐个完成了这个...但是当我把它们放在一起时,它会以同样的方式失败。
以下是日志的示例:
... (lots of similar lines, nothing out of the ordinary) ...
Downloading feed-0.3.9.1...
Downloading texmath-0.6.4...
Configuring resource-pool-0.2.1.1...
Building tagsoup-0.12.8...
Building resource-pool-0.2.1.1...
Installed hexpat-0.20.3
Configuring case-insensitive-1.1...
Building case-insensitive-1.1...
Configuring void-0.6.1...
Installed resource-pool-0.2.1.1
Configuring unordered-containers-0.2.3.2...
Installed case-insensitive-1.1
Downloading http-types-0.8.1...
Building void-0.6.1...
Building unordered-containers-0.2.3.2...
Building lifted-base-0.2.1.0...
Confi
! Push rejected, failed to compile Multipack app
每次,它停在不同的线和线上的不同位置。我已经尝试了各种buildpacks,它似乎都以同样的方式工作。
所有迹象似乎都指向超时错误......最有罪的是所有失败的尝试都是15分钟......或者可能是磁盘空间错误。有谁知道是否有办法增加超时或加快编译?我可以预先编译所有的二进制文件吗?
答案 0 :(得分:2)
可以在您的机器上编译二进制文件,将其提交到仅限Heroku的存储库并推送它。部署Here is a script I used:
#!/bin/sh -e
cabal configure
cabal build
cd heroku # this is my Heroku-only repository
git rm -r *
cp ../dist/build/labyrinth-server/labyrinth-server .
cp -r ../public/ . # this is the static files directory
echo "web: ./labyrinth-server" > Procfile
touch requirements.txt # pretend to be a Python app, otherwise Heroku doesn't know what to do
git add *
git commit -m "New version."
git push
cd - >/dev/null
注意:我稍后切换到OpenShift,OpenShift deploy script有一些增强功能。
另一个注意事项:您应该确保在具有兼容架构的计算机上构建并链接到现有的libc
版本。如果您手动SSH到服务器(rhc ssh
或heroku run bash
),您可以自己检查所有这些。对于当前的OpenShift,Debian Wheezy x64机器可以生成兼容的二进制文件。
答案 1 :(得分:1)