User Павел
Павел
11 уровень

Как я размещал Spring-Boot приложение на Heroku

Статья из группы Java Developer
Решил попробовать запустить простое приложение на облаке. За основу я взял эту статью Как разместить Spring-Boot-приложение на heroku.com. Пошаговая инструкция Если ты ее прочитал(-а) и все заработало без вопросов, то ниже текст не для тебя. Лично у меня возникло несколько дополнений: 1. В пунктах 5, 6 и 7 показывается как использовать в приложении облачную базу данных, прочитать это все интересно. Но если тебе, как и мне, это показалось лишним, то можно использовать СУБД H2 (включи гугл траслит). Тут показан пример как наполнить БД с помощью файла data.sql и скриптов. Я использовал не скрипты, а интерфейс CommandLineRunner, который предоставляет метод run. Нужно просто реализовать класс, например MyRunner навесить на него java-конфигурацию и имплементировать интерфейс. Ниже пример использования:

@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. Как я размещал Spring-Boot приложение на Heroku - 1 В структуре проекта IDEA должен присутствовать файл . gitignore и папка target должна быть исключена из отслеживания Git. В качестве консоли я использовал Terminal IDEA, просто в том же проекте который хочу запустить в облако, открыл вкладку Terminal, вот так она выглядит: Как я размещал Spring-Boot приложение на Heroku - 2 Поэтому не мне надо искать нужную директорию. (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 выкачивает зависимости и в конце:

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 Или привычные, но менее информативные кнопки интерфейса Как я размещал Spring-Boot приложение на Heroku - 3
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ