私は以前、Cloud FoundryでJavaアプリケーションを正常に導入してきました。ただし、開発者はCからコンパイルされた共有ライブラリを追加しました。.zip
ファイルに.so
を追加しました(ユニバーサルパッケージャを使用し、zipファイルでCloud Foundryにデプロイしています)。.so
が実行可能であることを確認しました。しかし、配備するときにエラーが発生する:クラウドファウンドリのJavaアプリケーションとカスタムC共有ライブラリをバンドルするにはどうすればよいですか?
2016-12-23T14:39:01.013+00:00 [STG/0] [OUT] -----> Java Buildpack Version: eba4df6 | git://github.com/cloudfoundry/java-buildpack.git#eba4df6
2016-12-23T14:39:01.017+00:00 [STG/0] [ERR] [Buildpack] ERROR Compile failed with exception #<RuntimeError: No container can run this application. Please ensure that you’ve pushed a valid JVM artifact or artifacts using the -p command line argument or path manifest entry. Information about valid JVM artifacts can be found at https://github.com/cloudfoundry/java-buildpack#additional-documentation.
2016-12-23T14:39:01.017+00:00 [STG/0] [ERR] No container can run this application. Please ensure that you’ve pushed a valid JVM artifact or artifacts using the -p command line argument or path manifest entry. Information about valid JVM artifacts can be found at https://github.com/cloudfoundry/java-buildpack#additional-documentation.
2016-12-23T14:39:01.022+00:00 [STG/0] [ERR] Failed to compile droplet
2016-12-23T14:39:01.024+00:00 [STG/0] [OUT] Exit status 223
私はJava Buildpackからカスタムビルドパックを作成する必要があることを理解しています。私は私だけcompile
段階を変更する必要が集まることができるものから、 https://github.com/ONSdigital/java-buildpack/blob/master/bin/compile#L28
# Adding crf tagger library
status "Adding crf tagger support"
cp $bp_dir/parsers/src/main/resources/libbackend.so $build_dir/vendor/
# update the PATH
status "Building runtime environment"
mkdir -p $build_dir/.profile.d
echo "export PATH=\"$HOME/bin:\$HOME/vendor/:\$PATH\";" > $build_dir/.profile.d/crftagger.sh
echo "export LD_LIBRARY_PATH=\"\$HOME/vendor/\";" >> $build_dir/.profile.d/crftagger.sh
:しかし、私はこの時点でコードで立ち往生しています。 .so
をコピーしてBuildpackを正常に実行させるには、何をする必要がありますか。
感謝を使用するようにしてください。共有オブジェクトを別の場所からダウンロードし、それをパスに追加すると便利です。しかし、共有オブジェクトをFat Zipにバンドルしてクラウドファウンドリにデプロイするソリューションがありますか?ファイアウォールの内側にあるクラウドインスタンスと内部インスタンスにデプロイする必要がありますので、 'profile'メソッドを使用する場合は2つの解決策が必要です。 – albal
'.profile' bashスクリプトでコマンドを使ってアプリケーションをデプロイして実行しています。 – albal