Я ранее успешно развертывал Java-приложение в Cloud Foundry. Однако теперь разработчики добавили общую библиотеку, скомпилированную из C. Я добавил .so
в файл .zip
(я использую универсальный упаковщик и развертываю в Cloud Foundry по zip-файлу) и гарантировал, что .so
является исполняемым. Однако, когда я раскрываю я получаю ошибку:Как связать пользовательскую общую библиотеку C с Java-приложением в Cloud Foundry?
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
Так я понимаю, что мне нужно, чтобы создал пользовательский Buildpack из Java Buildpack. Тем не менее, я застрять с кодом на данный момент: 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
Из того, что я могу собрать нужно только изменить compile
стадии. Что мне нужно сделать, чтобы скопировать по .so
и успешно запустить Buildpack.
Спасибо. Это было бы полезно, если бы я загружал общий объект из другого места, а затем добавлял его в путь. Однако есть ли решение, в котором я могу объединить общий объект в Fat Zip и развернуть в облачный литейный цех. Просто мне нужно развернуть экземпляр облака и внутренний экземпляр, который находится за брандмауэром, поэтому мне понадобится два решения, если вы используете метод 'profile'. – albal
Я получил свое приложение, развернутое и запущенное с помощью команд в сценарии bash .profile. – albal