2016-12-23 2 views
0

Я ранее успешно развертывал 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.

ответ

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'. – albal

+0

Я получил свое приложение, развернутое и запущенное с помощью команд в сценарии bash .profile. – albal

Смежные вопросы