Spring Boot: развертывание в облаке, Cloud Foundry

Cloud Foundry предоставляет пакеты сборки (buildpack) по умолчанию, которые вступают в игру, если не указан другой пакет сборки. Сборка Java Cloud Foundry имеет отличную поддержку приложений Spring, включая Spring Boot. Вы можете развернуть как автономные исполняемые jar-приложения, так и традиционные .war-упакованные приложения.

После того как вы скомпилировали свое приложение (например, с помощью mvn clean package) и установили инструмент командной строки cf, разверните его с помощью команды cf push, подставив путь к скомпилированному файлу .jar. Обязательно войдите в систему с помощью клиента командной строки cf, прежде чем отправлять приложение. В следующей строке показано использование команды cf push для развертывания приложения:

$ cf push acloudyspringtime -p target/demo-0.0.1-SNAPSHOT.jar

В предыдущем примере замените acloudyspringtime на любое значение, которое вы указываете в качестве имени вашего приложения.

Если в этом же каталоге присутствует файл manifest.yml Cloud Foundry, он учитывается.

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

Uploading acloudyspringtime... OK
Preparing to start acloudyspringtime... OK
-----> Downloaded app package (8.9M)
-----> Java Buildpack Version: v3.12 (offline) | https://github.com/cloudfoundry/java-buildpack.git#6f25b7e
-----> Downloading Open Jdk JRE 1.8.0_121 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz (found in cache)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.6s)
-----> Downloading Open JDK Like Memory Calculator 2.0.2_RELEASE from https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/memory-calculator-2.0.2_RELEASE.tar.gz (found in cache)
       Memory Settings: -Xss349K -Xmx681574K -XX:MaxMetaspaceSize=104857K -Xms681574K -XX:MetaspaceSize=104857K
-----> Downloading Container Certificate Trust Store 1.0.0_RELEASE from https://java-buildpack.cloudfoundry.org/container-certificate-trust-store/container-certificate-trust-store-1.0.0_RELEASE.jar (found in cache)
       Adding certificates to .java-buildpack/container_certificate_trust_store/truststore.jks (0.6s)
-----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://java-buildpack.cloudfoundry.org/auto-reconfiguration/auto-reconfiguration-1.10.0_RELEASE.jar (found in cache)
Checking status of app 'acloudyspringtime'...
  0 of 1 instances running (1 starting)
  ...
  0 of 1 instances running (1 starting)
  ...
  0 of 1 instances running (1 starting)
  ...
  1 of 1 instances running (1 running)

App started

Как только ваше приложение станет активным, вы можете проверить состояние развернутого приложения с помощью команды cf apps, как показано в следующем примере:

$ cf apps
Getting applications in ...
OK

name                 requested state   instances   memory   disk   urls
...
acloudyspringtime    started           1/1         512M     1G     acloudyspringtime.cfapps.io
...

Как только Cloud Foundry подтвердит, что ваше приложение было развернуто, вы сможете найти приложение по указанному URI. В предыдущем примере вы можете найти его по адресу https://acloudyspringtime.cfapps.io/.

Привязка к сервисам

По умолчанию метаданные о запущенном приложении, а также информация о подключении к сервисам предоставляются приложению в качестве переменных среды (например, $VCAP_SERVICES). Это архитектурное решение обусловлено многоязычностью Cloud Foundry (любой язык и платформа могут поддерживаться в виде buildpack-пакета). Переменные среды в области процессов не зависят от языка.

Переменные среды не всегда обеспечивают самый простой API, поэтому Spring Boot автоматически извлекает их и выравнивает данные в свойства, к которым можно получить доступ через абстракцию Spring Environment, как показано в следующем примере:

@Component
class MyBean implements EnvironmentAware {

    private String instanceId;

    @Override
    public void setEnvironment(Environment environment) {
        this.instanceId = environment.getProperty("vcap.application.instance_id");
    }

    // ...

}

Все свойства Cloud Foundry имеют префикс vcap. Вы можете использовать свойства vcap для доступа к информации о приложении (такой как общедоступный URL-адрес приложения) и информации о сервисе (такой как учетные данные базы данных).

Проект Java CFEnv лучше подходит для таких задач, как настройка DataSource.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки