Comment déployer Spring Boot sur Cloud Foundry?


J'ai essayé de déployer mon application spring boot sur CF avec ce qui suit pom.xml

       <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cloud-connectors</artifactId>
        </dependency>
    </dependencies>

MISE À JOUR

Ma demande

@SpringBootApplication
public class EdollarApplication {

    @Autowired
    private DataSource dataSource;

    public static void main(String[] args) {
        SpringApplication.run(EdollarApplication.class, args);
    }
}

DataSourceConfiguration.java

@Configuration
@Profile("cloud")
public class DataSourceConfiguration {

  @Bean
  public Cloud cloud() {
    return new CloudFactory().getCloud();
  }

  @Bean
  @ConfigurationProperties(DataSourceProperties.PREFIX)
  public DataSource dataSource() {
    return cloud().getSingletonServiceConnector(DataSource.class, null);
  }

}

Il n'y a pas d'erreur dans les journaux, mais je ne peux pas accéder aux URL que j'ai définies dans l'application. Exemples de journaux présentés ci-dessous

Updated app with guid 8b167ac9-11bb-483e-be0a-3dd8c8991a84 ({"state"=>"STARTED"})
-----> Downloaded app package (20K)

-----> Downloading Open Jdk JRE 1.8.0_45 from https://download.run.pivotal.io/openjdk/trusty/x86_64/openjdk-1.8.0_45.tar.gz (2.5s)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.3s)
-----> Downloading Tomcat Instance 8.0.21 from https://download.run.pivotal.io/tomcat/tomcat-8.0.21.tar.gz (0.5s)
       Expanding Tomcat to .java-buildpack/tomcat (0.1s)
-----> Downloading Tomcat Lifecycle Support 2.4.0_RELEASE from https://download.run.pivotal.io/tomcat-lifecycle-support/tomcat-lifecycle-support-2.4.0_RELEASE.jar (0.0s)
-----> Downloading Tomcat Logging Support 2.4.0_RELEASE from https://download.run.pivotal.io/tomcat-logging-support/tomcat-logging-support-2.4.0_RELEASE.jar (0.0s)
-----> Downloading Tomcat Access Logging Support 2.4.0_RELEASE from https://download.run.pivotal.io/tomcat-access-logging-support/tomcat-access-logging-support-2.4.0_RELEASE.jar (0.0s)
-----> Uploading droplet (51M)
[CONTAINER] org.apache.catalina.core.StandardService           INFO    Starting service Catalina
[CONTAINER] org.apache.catalina.startup.Catalina               INFO    Initialization processed in 514 ms
[CONTAINER] org.apache.coyote.http11.Http11NioProtocol         INFO    Initializing ProtocolHandler ["http-nio-61187"]
[CONTAINER] org.apache.catalina.core.StandardEngine            INFO    Starting Servlet Engine: Apache Tomcat/8.0.21
[CONTAINER] org.apache.catalina.startup.HostConfig             INFO    Deploying web application directory /home/vcap/app/.java-buildpack/tomcat/webapps/ROOT
[CONTAINER] org.apache.jasper.servlet.TldScanner               INFO    At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[CONTAINER] org.apache.coyote.http11.Http11NioProtocol         INFO    Starting ProtocolHandler ["http-nio-61187"]
[CONTAINER] org.apache.tomcat.util.net.NioSelectorPool         INFO    Using a shared selector for servlet write/read
[CONTAINER] org.apache.catalina.startup.Catalina               INFO    Server startup in 507 ms

Qu'est-ce qui m'a manqué ici ?

Author: abiieez, 2015-05-06

1 answers

Voici un exemple de projet minimal Spring Boot configuré pour s'exécuter dans Cloud Foundry: https://github.com/gratiartis/super-mini

Je l'ai fait fonctionner dans Cloud Foundry en mettant ce qui suit manifest.yml dans le répertoire racine du projet.

---
applications:
- name: super-mini
  # Fork of https://github.com/cloudfoundry/java-buildpack
  # For stability, keep your own fork.
  buildpack: https://github.com/gratiartis/java-buildpack
  memory: 512M
  instances: 1
  # Because the URL will be http://super-mini.cfapps.io/
  host: super-mini
  domain: cfapps.io
  path: target/super-mini-1.0.0-SNAPSHOT.jar

Notez que les éléments suivants peuvent être ajoutés pour activer un profil (c'est à dire "cloud"):

  env:
    SPRING_PROFILES_ACTIVE: cloud

Le path est basé sur l'exécution du déploiement à partir du répertoire racine de mon projet. Comme je suis sûr que vous aurez deviné, c'est une construction Maven, donc un .jar est créé dans un répertoire target.

Pour déployer, cd dans le répertoire racine du projet et exécuter:

cf push

Ce qui précède créera une application s'exécutant à http://super-mini.cfapps.io/hello

Jetez un oeil - il est en cours d'exécution en ce moment. Bien sûr, j'ai maintenant créé ce nom d'application, donc vous ne pouvez pas l'utiliser!

 6
Author: Steve, 2015-05-06 10:59:00