2016-12-23 11 views
0

私は以前、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を正常に実行させるには、何をする必要がありますか。

答えて

1

あなたが必要だ。このhttps://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile

前ランタイムフックに見てみてください。十分な情報を提供していないため(プロジェクト構造、ルートに.profileを持っているなど)、詳細を伝えることはできません。

あなたは共有ライブラリを追加する必要がある場合は、attr_reader :additional_librarieshttps://github.com/cloudfoundry/java-buildpack/blob/master/docs/extending-droplet.md

+1

感謝を使用するようにしてください。共有オブジェクトを別の場所からダウンロードし、それをパスに追加すると便利です。しかし、共有オブジェクトをFat Zipにバンドルしてクラウドファウンドリにデプロイするソリューションがありますか?ファイアウォールの内側にあるクラウドインスタンスと内部インスタンスにデプロイする必要がありますので、 'profile'メソッドを使用する場合は2つの解決策が必要です。 – albal

+0

'.profile' bashスクリプトでコマンドを使ってアプリケーションをデプロイして実行しています。 – albal

関連する問題