Автор оригинала: Tim Schimandle.
1. Обзор
В этой статье мы рассмотрим настройку приложения Spring Boot на Heroku с помощью соединителей Spring Cloud.
Heroku-это сервис, предоставляющий хостинг для веб-сервисов. Кроме того, они предоставляют большой выбор сторонних сервисов, называемых надстройками, которые обеспечивают все-от мониторинга системы до хранения базы данных.
В дополнение ко всему этому у них есть собственный конвейер CI/CD, который легко интегрируется в Git, что ускоряет разработку в производство.
Spring поддерживает Heroku через библиотеку Spring Cloud Connectors. Мы будем использовать это для автоматической настройки источника данных PostgreSQL в нашем приложении.
Давайте перейдем к написанию приложения.
2. Книжный сервис Spring Boot
Во-первых, давайте создадим новую простую службу загрузки Spring .
3. Подпишитесь на Heroku
Теперь нам нужно зарегистрироваться на учетную запись Heroku. Пойдем в heroku.com и нажмите на кнопку регистрации в правом верхнем углу страницы.
Теперь, когда у нас есть учетная запись, нам нужно получить инструмент CLI. Нам нужно перейти на страницу установки heroku-cli и установить это программное обеспечение. Это даст нам инструменты, необходимые для завершения этого урока.
4. Создайте приложение Heroku
Теперь, когда у нас есть CLI Heroku, давайте вернемся к нашему приложению.
4.1. Инициализация репозитория Git
Heroku лучше всего работает при использовании git в качестве системы управления версиями.
Давайте начнем с того, что перейдем в корень вашего приложения, в тот же каталог, что и ваш pom.xml файл и запуск команды git init для создания репозитория git. Затем запустите git add . и git commit -m “первый коммит” .
Теперь наше приложение сохранено в вашем локальном репозитории git.
4.2. Предоставление веб-приложения Heroku
Далее, давайте используем CLI Heroku для предоставления веб-сервера в нашей учетной записи.
Во-первых, нам нужно аутентифицировать вашу учетную запись Heroku. Из командной строки запустите heroku login и следуйте инструкциям по входу в систему и созданию SSH-ключа.
Затем запустите heroku create . Это обеспечит веб-сервер и добавит удаленный репозиторий, в который мы можем отправить наш код для развертывания. Мы также увидим домен, напечатанный в консоли, скопируйте этот домен, чтобы мы могли получить к нему доступ позже.
4.3. Нажмите код на Heroku
Теперь мы будем использовать git для отправки нашего кода в новый репозиторий Heroku.
Выполните команду git push heroku master , чтобы отправить наш код в Heroku.
В выводе консоли мы должны увидеть журналы, указывающие на то, что загрузка прошла успешно, после чего их система загрузит любые зависимости, построит наше приложение, запустит тесты (если таковые имеются) и развернет приложение, если все пройдет гладко.
Вот и все-теперь наше приложение публично развернуто на веб-сервере.
5. Тест в памяти на Heroku
Давайте убедимся, что ваше приложение работает. Используя домен из нашего шага создания, давайте протестируем наше живое приложение.
Давайте выполним несколько HTTP-запросов:
POST https://{heroku-domain}/books HTTP {"author":"baeldung","title":"Spring Boot on Heroku"}
Мы должны вернуться:
{ "title": "Spring Boot on Heroku", "author": "baeldung" }
Теперь давайте попробуем прочитать объект, который мы только что создали:
GET https://{heroku-domain}/books/1 HTTP
Это должно вернуться:
{ "id": 1, "title": "Spring Boot on Heroku", "author": "baeldung" }
Все это выглядит хорошо, но в производстве мы должны использовать постоянное хранилище данных.
Давайте рассмотрим подготовку базы данных PostgreSQL и настройку нашего приложения Spring для ее использования.
6. Добавление PostgreSQL
Чтобы добавить базу данных PostgreSQL, выполните следующую команду heroku addons:create heroku-postgresql:hobby-dev
Это обеспечит базу данных для нашего веб-сервера и добавит переменную среды, которая предоставляет информацию о соединении.
Spring Cloud Connector настроен на обнаружение этой переменной и автоматическую настройку источника данных , учитывая, что Spring может обнаружить, что мы хотим использовать PostgreSQL.
Чтобы Spring Boot знал, что мы используем PostgreSQL, нам нужно внести два изменения.
Во-первых, нам нужно добавить зависимость для включения драйверов PostgreSQL:
org.postgresql postgresql 42.2.10
Затем давайте добавим свойства, чтобы соединители данных Spring могли настраивать базу данных в соответствии с ее доступными ресурсами.
В файле src/main/resources создайте файл application.properties и добавьте следующие свойства:
spring.datasource.driverClassName=org.postgresql.Driver spring.datasource.maxActive=10 spring.datasource.maxIdle=5 spring.datasource.minIdle=2 spring.datasource.initialSize=5 spring.datasource.removeAbandoned=true spring.jpa.hibernate.ddl-auto=create
Это объединит наши соединения с базой данных и ограничит соединения нашего приложения. Heroku ограничивает количество активных подключений в базе данных уровня разработки до 10 , поэтому мы устанавливаем максимальное значение 10. Кроме того, мы устанавливаем свойство hibernate.ddl для создания, чтобы наша таблица книг создавалась автоматически.
Наконец, зафиксируйте эти изменения и запустите git push heroku master . Это подтолкнет эти изменения к нашему приложению Heroku. После запуска нашего приложения попробуйте запустить тесты из предыдущего раздела.
Последнее, что нам нужно сделать, это изменить настройки ddl. Давайте также обновим это значение:
spring.jpa.hibernate.ddl-auto=update
Это даст приложению указание обновить схему при внесении изменений в сущность при перезапуске приложения. Зафиксируйте и протолкните это изменение, как и раньше, чтобы изменения были перенесены в наше приложение Heroku.
Нам не нужно было писать пользовательскую интеграцию источников данных для всего этого. Это связано с тем, что Spring Cloud Connectors обнаруживает, что мы работаем с Heroku и используем PostgreSQL, и автоматически подключает источник данных Heroku.
5. Заключение
Теперь у нас есть запущенное приложение Spring Boot в Heroku.
Прежде всего, простота перехода от одной идеи к работающему приложению делает Heroku надежным способом развертывания.
Чтобы узнать больше о Heroku и всех инструментах, которые он предлагает, мы можем прочитать больше на heroku.com .
Как всегда, фрагменты кода можно найти на GitHub .