СОДЕРЖАНИЕ ЦИКЛА СТАТЕЙ
Решил попробовать запустить простое приложение на облаке. За основу я взял эту статью Как разместить Spring-Boot-приложение на heroku.com. Пошаговая инструкция
Если ты ее прочитал(-а) и все заработало без вопросов, то ниже текст не для тебя.
Лично у меня возникло несколько дополнений:
1. В пунктах 5, 6 и 7 показывается как использовать в приложении облачную базу данных, прочитать это все интересно.
Но если тебе, как и мне, это показалось лишним, то можно использовать СУБД H2 (включи гугл траслит). Тут показан пример как наполнить БД с помощью файла data.sql и скриптов.
Я использовал не скрипты, а интерфейс CommandLineRunner, который предоставляет метод run.
Нужно просто реализовать класс, например MyRunner навесить на него java-конфигурацию и имплементировать интерфейс.
Ниже пример использования:
В структуре проекта IDEA должен присутствовать файл . gitignore и папка target должна быть исключена из отслеживания Git.
В качестве консоли я использовал Terminal IDEA, просто в том же проекте который хочу запустить в облако, открыл вкладку Terminal, вот так она выглядит:
Поэтому не мне надо искать нужную директорию. (cd my-project/)
heroku login - мы уже сделали(если нет, то самое время).
Далее копирую и исполняю по очереди гит команды:
Сначала создаю гит репозиторий
git init
heroku git:remote -a from-java-rush
Теперь делаю коммит и осуществляю деплой
git add .
git commit -am "make it better"
git push heroku master
В консоли будут появляться логи: что приложение начало сборку, что Maven выкачивает зависимости и в конце:
![Как я размещал Spring-Boot приложение на Heroku - 3]()
@Component
public class MyRunner implements CommandLineRunner {
@Autowired
private CityRepository repository;
@Override
public void run(String... args) throws Exception {
repository.deleteAll();
repository.save(new City("Bratislava", 432000));
repository.save(new City("Budapest", 1759000));
repository.save(new City("Prague", 1280000));
}
}
Метод исполниться в момент запуска приложения и сохранит сущности в БД.
Важно: из пункта 7 основной статьи, в application.properties (или application.yaml) необходимо добавить настройку server.port=${PORT:8080} – дефолтный порт избавит от распространенной проблемы:
heroku[router]: at=error code=H20 desc="App boot timeout" method=GET
2. В пункте 8 показывается как публиковать приложение. Там довольно интересно написано про особенности использования приложений на версии Java 11, я как старообрядец использую восьмую Java, поэтому файл system.properties мне не нужен. Если у тебя Java 9+ то не забудь создать упомянутый файл и добавить версию Java.
Автор предлагает следующий порядок публикации:
<samp>Для этого выполним следующие шаги:
• Откроем папку с репозиторием проекта в терминале Git Bash.
• Найдём ссылку на удалённый репозиторий heroku для вашего приложения в Settings — в разделе App Information → Heroku git URL.
• Добавим новый удалённый репозиторий к вашему Git.</samp>
Я использовал порядок, который описан на сайте Heroku. В созданном на сайте приложении нужно найти вкладку Deploy, прочитать все что там написано.
А затем выполнить команды в блоке Create a new Git repository.


remote: https://from-java-rush.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/from-java-rush.git
* [new branch] master -> master
Где указана ссылка https://from-java-rush.herokuapp.com/, у тебя будет своя ссылка, вот в нее и тыкни. Само собой, если у тебя нет графического интерфейса в приложении, а только набор rest методов, нужно после ссылки указать через слеш название метода, например так:
https://from-java-rush.herokuapp.com/heroku/city (надо подождать пока контейнер проснется, если не проснулся, то значит я удалил приложение)
Теперь ты можешь вносить изменения в развернутое приложение на heroku, прямо из IDEA, используя консольные Git команды
git add .
git commit -am "make it better"
git push heroku master
Или привычные, но менее информативные кнопки интерфейса

ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ