Как запустить весеннее приложение на облачном литейном заводе как разовую задачу с помощью Java-пакета сборки

Я хотел бы запустить весеннее приложение на cloudfoundry в качестве единовременной задачи, используя java buildpack.

Обратите внимание, что мое приложение не является веб-приложением, а представляет собой приложение Spring Batch, которое также использует задачу Spring Cloud.

Вот мой манифест:

---
buildpack: https://github.com/cloudfoundry/java-buildpack.git
memory: 1024M
env:
  APPLICATION_URL: http://bignibou-server.cfapps.io/
  APPLICATION_MAIL_NO_REPLY_ADDRESS: balteo@bignibou-server.cfapps.io
  SPRING_PROFILES_ACTIVE: cloud

applications:
- name: bignibou-server
  path: bignibou-server/build/libs/bignibou-server.jar
  env:
    APPLICATION_GOOGLE_API_KEY: ******************
- name: bignibou-batch
  path: bignibou-batch/build/libs/bignibou-batch.jar
  no-hostname: true
  no-route: true
  command: null
  health-check-type: none
  env:
    JAVA_OPTS: -Dspring.batch.job.names=messagesDigestMailingJob

Всякий раз, когда я нажимаю на приложение, оно определяется как рабочее приложение:

App bignibou-batch is a worker, skipping route creation

что я и хочу

Но затем он пытается запустить пакет как веб-приложение (все еще при развертывании приложения)... См.:

2017-03-24T22:33:50.828+01:00 [CELL/0] [OUT] Destroying container
2017-03-24T22:33:50.854+01:00 [API/3] [OUT] Process has crashed with type: "web"
2017-03-24T22:33:50.873+01:00 [API/3] [OUT] App instance exited with guid befc8bf2-d338-45e1-90b9-430ff3b09a3f payload: {"instance"=>"", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* Codependent step exited\n* cancelled", "crash_count"=>1, "crash_timestamp"=>1490391230813627797, "version"=>"8f92e459-a6c7-4558-bc0b-09ac398eb069"}
2017-03-24T22:33:51.473+01:00 [CELL/0] [OUT] Successfully destroyed container
2017-03-24T22:33:51.634+01:00 [CELL/0] [OUT] Creating container
2017-03-24T22:33:52.478+01:00 [CELL/0] [OUT] Successfully created container
2017-03-24T22:33:56.824+01:00 [APP/PROC/WEB/0] [OUT] JVM Memory Configuration: -XX:MaxMetaspaceSize=164239K -XX:ReservedCodeCacheSize=240M -XX:CompressedClassSpaceSize=25984K -Xmx295151K -XX:MaxDirectMemorySize=10M
2017-03-24T22:33:56.827+01:00 [APP/PROC/WEB/0] [ERR] JVM Memory Configuration: -XX:ReservedCodeCacheSize=240M -XX:CompressedClassSpaceSize=25984K -Xmx295151K -XX:MaxDirectMemorySize=10M -XX:MaxMetaspaceSize=164239K
2017-03-24T22:33:59.073+01:00 [APP/PROC/WEB/0] [OUT] . ____ _ __ _ _
2017-03-24T22:33:59.073+01:00 [APP/PROC/WEB/0] [OUT] /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
2017-03-24T22:33:59.073+01:00 [APP/PROC/WEB/0] [OUT] \\/ ___)| |_)| | | | | || (_| | ) ) ) )
2017-03-24T22:33:59.073+01:00 [APP/PROC/WEB/0] [OUT] ' |____| .__|_| |_|_| |_\__, | / / / /
2017-03-24T22:33:59.073+01:00 [APP/PROC/WEB/0] [OUT] =========|_|==============|___/=/_/_/_/
2017-03-24T22:33:59.073+01:00 [APP/PROC/WEB/0] [OUT] ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2017-03-24T22:33:59.075+01:00 [APP/PROC/WEB/0] [OUT] :: Spring Boot :: (v1.5.2.RELEASE)
2017-03-24T22:33:59.266+01:00 [APP/PROC/WEB/0] [OUT] 2017-03-24 21:33:59.256 INFO 16 --- [ main] pertySourceApplicationContextInitializer : Adding 'cloud' PropertySource to ApplicationContext
2017-03-24T22:33:59.381+01:00 [APP/PROC/WEB/0] [OUT] 2017-03-24 21:33:59.359 WARN 16 --- [ main] o.c.r.o.s.cloud.AbstractCloudConnector : No suitable service info creator found for service elasticsearch Did you forget to add a ServiceInfoCreator?
2017-03-24T22:33:59.389+01:00 [APP/PROC/WEB/0] [OUT] 2017-03-24 21:33:59.388 INFO 16 --- [ main] nfigurationApplicationContextInitializer : Adding cloud service auto-reconfiguration to ApplicationContext
2017-03-24T22:33:59.465+01:00 [APP/PROC/WEB/0] [OUT] 2017-03-24 21:33:59.451 INFO 16 --- [ main] com.bignibou.batch.Batch : Starting Batch on a1e87528-637d-4dae-62ab-0538e48fb49b with PID 16 (/home/vcap/app/BOOT-INF/classes started by vcap in /home/vcap/app)

что не то, что я хочу...

Итак, мои вопросы:

  • Как я могу настроить мой манифест для правильного запуска пакетного приложения без автоматического запуска - я просто хочу, чтобы двоичные файлы были отправлены в cf, чтобы я мог запускать задачи позже...
  • Как я могу запустить свою весеннюю партию как задачу cf на cloudfoundry?

1 ответ

Как я могу настроить мой манифест для правильного запуска пакетного приложения без автоматического запуска - я просто хочу, чтобы двоичные файлы были отправлены в cf, чтобы я мог запускать задачи позже... Как я могу запустить свой весенний пакет как задачу cf на облачной основе?

Чтобы запустить задачу, вам нужно развернуть приложение и полностью подготовить его (так что есть капля). Вы можете тогда cf run-task <app> <task-cmd>,

Пара идей:

Первый вариант, вы можете использовать manifest.yml следующим образом:

---
applications:
- name: spring-music
  memory: 32M
  path: build/libs/spring-music.war
  health-check-type: none
  no-route: true
  command: while [ 1 == 1 ]; do sleep 9999; done
  buildpack: java_buildpack

Это настроит приложение с очень маленьким ограничением памяти и команду, которая по сути ничего не делает навсегда (вечная часть является ключевой, чтобы приложение полностью запустилось и запустилось). Мы также установили проверку работоспособности на отсутствие и отсутствие маршрута, чтобы ни один маршрут не был связан и проверка работоспособности TCP не выполнялась. При желании вы можете установить свой пакет сборки.

Тогда беги cf push, Приложение должно появиться и начать нормально. После этого вы можете cf run-task столько раз, сколько вы хотите. Вы можете по желанию остановить приложение.

Второй вариант, просто нажмите ваше приложение без каких-либо специальных настроек manifest.yml. Приложение должно работать правильно, не запускаться, а после сбоя вы можете cf stop приложение. Оттуда вы должны быть в состоянии cf run-task столько раз, сколько вы хотите.

Вы также можете использовать API v3 напрямую, что даст вам дополнительную гибкость, но все взаимодействие осуществляется вручную через cf curl с этой точки зрения.

Подтолкнуть ваше приложение, как так на pcf

cf push --health-check-type none -p myapp-0.0.1-SNAPSHOT.jar myapp

используйте специальную панель запуска задач, чтобы запустить приложение как задачу. Вы также можете добавить аргументы после ".JarLauncher arg1", который будет отображаться как строковые [] аргументы в вашем основном методе или CommandLineRunner

Запускает задачу с помощью панели задач. Эта поддержка задач встроена в платформу.

cf run-task myapp ".java-buildpack/open_jdk_jre/bin/java org.springframework.boot.loader.JarLauncher arg1" --name my-task

Примечание ссылка ниже также показывает, что вы должны запланировать это

Источник: https://github.com/joshlong/cf-task-demo

Другие вопросы по тегам