我试图制作一个自定义buildpack来在Heroku上部署PhantomJS 2.5 beta版。 This is my buildpack基于运行版本2.1.1的Stomita's Phantomjs Buildpack并且运行正常。
这是我在构建过程中得到的结果:
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> PhantomJS app detected
remote: -----> Fetching PhantomJS 2.5.0-beta binaries at https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.5.0-beta-linux-ubuntu-trusty-x86_64.tar.gz
remote: ! Push rejected, failed to compile PhantomJS app.
remote:
remote: ! Push failed
remote: Verifying deploy....
remote:
remote: ! Push rejected to rp-phantom.
remote:
如您所见,信息不多。二进制文件下载得很好,我检查了在curl命令中省略-s标志,但无法弄清楚它是什么失败。
这是我的编译文件:
#!/bin/sh
set -e
BUILD_DIR=$1
CACHE_DIR=$2
# config
VERSION="2.5.0-beta"
# Buildpack URL
ARCHIVE_NAME=phantomjs-${VERSION}-linux-ubuntu-trusty-x86_64
FILE_NAME=${ARCHIVE_NAME}.tar.gz
BUILDPACK_PHANTOMJS_PACKAGE=https://bitbucket.org/ariya/phantomjs/downloads/${FILE_NAME}
mkdir -p $CACHE_DIR
if ! [ -e $CACHE_DIR/$FILE_NAME ]; then
echo "-----> Fetching PhantomJS ${VERSION} binaries at ${BUILDPACK_PHANTOMJS_PACKAGE}"
curl $BUILDPACK_PHANTOMJS_PACKAGE -L -s -O $CACHE_DIR/$FILE_NAME
fi
echo "-----> Extracting PhantomJS ${VERSION} binaries to ${BUILD_DIR}/vendor/phantomjs"
mkdir -p $CACHE_DIR/$ARCHIVE_NAME
mkdir -p $BUILD_DIR/vendor
tar -xvf $CACHE_DIR/$FILE_NAME -C $CACHE_DIR
mv $CACHE_DIR/$ARCHIVE_NAME $BUILD_DIR/vendor/phantomjs
echo "-----> exporting PATH and LIBRARY_PATH"
PROFILE_PATH="$BUILD_DIR/.profile.d/phantomjs.sh"
mkdir -p $(dirname $PROFILE_PATH)
echo 'export PATH="$PATH:$HOME/vendor/phantomjs/bin"' >> $PROFILE_PATH
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:vendor/phantomjs/lib"' >> $PROFILE_PATH
提前致谢!
答案 0 :(得分:1)
我能够在Heroku上运行2.5.0 beta。以下是我自己post的答案:
最终,我能够弄明白!你必须要做几件事......
依赖关系:您必须使用Heroku Apt buildpack来安装缺少的依赖项。首先,您需要将buildpack添加到您的应用程序:
heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt
接下来,您将在项目根目录中创建一个名为Aptfile
的文件。在这里,我们为PhantomJS 2.5.0 Beta添加了缺少的依赖项。 2.5.0引入了webp
支持,所以我们需要它。 libhyphen0
也是必需的,但我不确定它们是如何使用的。最后,我们使用gcc-5
和最新的libstdc++6
。内容应如下所示:
webp
libhyphen0
https://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.1-8ubuntu1_amd64.deb
https://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb
PhantomJS:接下来我们抓住最新版本的PhantomJS。我创建了fork最popular个PhantomJS buildpack的https://en.wikipedia.org/wiki/Soundex并更新了它以用于2.5.0 beta版。 2.5.0 beta版本为trusty
以及xenial
构建,因此构建包将检测Heroku堆栈并使用适当的堆栈(尽管cedar-16堆栈在测试时仍处于测试阶段这个帖子)。因此,请将其添加到您的应用中:
heroku buildpacks:add https://github.com/lookitsatravis/heroku-buildpack-phantomjs.git
部署:剩下的就是部署了!将Aptfile
提交到您的仓库,确保已设置构建包,然后推送到Heroku。
进行了一些试验和错误,但最终我能够启动并运行。希望这有助于其他人,直到最终候选人被释放。