Автор оригинала: Corneil du Plessis.
1. Обзор
Развертывание приложения Spring Boot в Cloud Foundry является простым упражнением. В этом учебнике мы покажем вам, как это сделать.
2. Весенние облачные зависимости
Поскольку этот проект потребует новых зависимостей для проекта Spring Cloud, мы добавим БОМ зависимостей весеннего облака:
org.springframework.cloud spring-cloud-dependencies Greenwhich.RELEASE pom import
Мы можем найти последнюю версию весенне-облачные зависимости библиотека на Мавен Центральный .
Теперь мы хотим сохранить отдельную сборку для Cloud Foundry, поэтому мы создадим профиль под названием облачность в мавене пом.xml.
Мы также добавим исключения компиляторов и плагин Spring Boot для настройки названия пакета:
src/main/resources **/logback.xml org.springframework.boot spring-boot-maven-plugin ${project.name}-cf org.apache.maven.plugins maven-compiler-plugin **/cloud/config/*.java
Мы также хотим исключить облачные файлы из обычной сборки, поэтому добавляем глобальное исключение профиля в плагин компилятора Maven:
org.apache.maven.plugins maven-compiler-plugin **/cloud/*.java
Затем нам необходимо добавить библиотеки Spring Cloud Starter и Spring Cloud Connectors, которые обеспечивают поддержку Облачного лимемии:
org.springframework.cloud spring-cloud-starter org.springframework.boot spring-boot-starter-cloud-connectors
3. Конфигурация облачных лиохих
Чтобы пройти через этот учебник, мы должны зарегистрироваться для пробного здесь или скачать предварительно настроенную среду разработки для Родной Linux или Виртуальная коробка .
Кроме того, необходимо установить облачный литейный КЛИ. Инструкции здесь .
После регистрации у поставщика облачных литейных работ будет доступен URL-адрес API (вы можете вернуться к нему, следуя Инструменты вариант на левой стороне).
Контейнер приложения позволяет связывать службы с приложениями. Далее давайте войдите в среду Cloud Foundry:
cf login -a
Облачный литейный рынок – это каталог услуг как базы данных, сообщения электронной почты, мониторинг, журналы и многое другое. Большинство услуг предоставляют бесплатный или пробный план.
Давайте искать marketplace для “MyS’L” и создать сервис для нашего приложения:
cf marketplace | grep MySQL
> cleardb spark, boost*, amp*, shock* Highly available MySQL for your Apps.
В описании указаны услуги с “MyS’L”. На PCF услуга MyS’L называется cleardb и несвободные планы отмечены звездочкой.
Далее мы перечислим детали службы, используя:
cf marketplace -s cleardb
> service plan description free or paid spark Great for getting started and developing your apps free boost Best for light production or staging your applications paid amp For apps with moderate data requirements paid shock Designed for apps where you need real MySQL reliability, power and throughput paid
Теперь мы создаем бесплатный экземпляр сервиса MyS’L под названием весна-загрузка-db :
cf create-service cleardb spark spring-bootstrap-db
4. Конфигурация приложения
Далее мы добавим @Configuration аннотированный класс, который АннотацияКлаудКонфиг создать ДанныеИсточник в пакете под названием org.baeldung.cloud.config :
@Configuration @Profile("cloud") public class CloudDataSourceConfig extends AbstractCloudConfig { @Bean public DataSource dataSource() { return connectionFactory().dataSource(); } }
Добавление @Profile (“облако”) гарантирует, что Облачный разъем не активен, когда мы делаем локальное тестирование. Мы также добавляем @ActiveProfiles (профили и “местные”) к интеграционным тестам.
Затем создайте приложение с помощью:
mvn clean install spring-boot:repackage -P cloudfoundry
Кроме того, мы должны обеспечить manifest.yml файл, чтобы привязать службу к приложению.
Мы обычно разагом manifest.yml файл в папке проекта, но в этом случае мы создадим облачность папку, так как мы собираемся продемонстрировать развертывание нескольким поставщикам облачных услуг:
--- applications: - name: spring-boot-bootstrap memory: 768M random-route: true path: ../target/spring-boot-bootstrap-cf.jar env: SPRING_PROFILES_ACTIVE: cloud,mysql services: - spring-bootstrap-db
5. Развертывание
Развертывание приложения теперь так же просто, как:
cd cloudfoundry cf push
Cloud Foundry будет использовать Java buildpack для развертывания приложения и создания случайного маршрута к приложению.
Мы можем просмотреть последние несколько записей в файле журнала с помощью:
cf logs spring-boot-bootstrap --recent
Или мы можем следить за файлом журнала:
cf logs spring-boot-bootstrap
Наконец, нам нужно название маршрута для тестирования приложения:
cf app spring-boot-bootstrap
> name: spring-boot-bootstrap requested state: started routes: spring-boot-bootstrap-delightful-chimpanzee.cfapps.io last uploaded: Thu 23 Aug 08:57:20 SAST 2018 stack: cflinuxfs2 buildpacks: java-buildpack=v4.15-offline-... type: web instances: 1/1 memory usage: 768M state since cpu memory disk #0 running 2018-08-23T06:57:57Z 0.5% 290.9M of 768M 164.7M of 1G
Выполнение следующей команды добавит новую книгу:
curl -i --request POST \ --header "Content-Type: application/json" \ --data '{"title": "The Player of Games", "author": "Iain M. Banks"}' \ https:///api/books #OR http POST https:// /api/books title="The Player of Games" author="Iain M. Banks"
И эта команда перечислит все книги:
curl -i https:///api/books #OR http https:// /api/books
> HTTP/1.1 200 OK [ { "author": "Iain M. Banks", "id": 1, "title": "Player of Games" }, { "author": "J.R.R. Tolkien", "id": 2, "title": "The Hobbit" } ]
6. Масштабирование приложения
Наконец, масштабирование приложения на Cloud Foundry так же просто, как и использование масштаб команда:
cf scale spring-cloud-bootstrap-cloudfoundryOptions: -i -m # Like 512M or 1G -k # Like 1G or 2G -f # Force restart without prompt
Не забудьте удалить приложение, когда оно нам больше не нужно:
cf delete spring-cloud-bootstrap-cloudfoundry
7. Заключение
В этой статье мы рассмотрели библиотеки Spring Cloud, которые упрощают разработку облачного приложения с использованием Spring Boot. Развертывание с облачным литейным CLI хорошо документировано здесь .
Дополнительные плагины для CLI доступны в репозиторий плагинов .
Полный исходный код наших примеров здесь, как всегда, более на GitHub .