If user runs `spring cloud dataflow h2` you'd expect the database to be used by dataflow. It's tricky to achieve, and impossible with an in-memory data store (because of the way dataflow is set up currently). This was achieved by adding a feature: each deployable can specify "enabled" (in addition to existing "disabled" feature) properties: i.e. environemnt properties that are applied to all other apps as long as this one is running. Another change here is to pass the "PATH" env var from the deployer down to deployed apps. This affects dataflow in particular because it likes to launch other apps, and it will pick the wrong Java version (for instance) if the path is not preserved.
Spring Cloud Launcher
Building
./mvnw clean install from parent directory
Installing
Install Spring CLI first: https://github.com/spring-cloud/spring-cloud-cli/blob/master/docs/src/main/asciidoc/install.adoc
Running
$ spring cloud
Currently starts configserver, eureka, h2 (db server), hystrixdashboard and kafka. Here is the full configuration.
Configuring
Spring Cloud Launcher use normal Spring Boot configuration mechanisms. The config name is cloud, so configuration can go in cloud.yml or cloud.properties.
For example, to run configserver and eureka, create a cloud.yml that looks like:
spring:
cloud:
launcher:
deployables:
- name: configserver
coordinates: maven://org.springframework.cloud.launcher:spring-cloud-launcher-configserver:1.1.0.BUILD-SNAPSHOT
port: 8888
waitUntilStarted: true
order: -10
- name: eureka
coordinates: maven://org.springframework.cloud.launcher:spring-cloud-launcher-eureka:1.1.0.BUILD-SNAPSHOT
port: 8761
The name attribute is required. If waitUntilStarted is true, Launcher will block until the application has reached the deployed state. Before commands are deployed, the list is sorted using Spring's OrderComparator. In the above case, configserver is deployed before any other app is deployed. Currently only maven: coordinates and standard Spring Resources (file:, etc...) are supported.
You can also select from the predefined deployables. For example to run Spring Cloud Data Flow execute:
spring cloud eureka,configserver
Config Server git uri
To run configserver with a git repo set the following in ./configserver.yml:
spring:
profiles.active: git
cloud.config.server.git.uri: http://mygitserver/myrepo.git
Stopping
Ctrl-C in the same terminal spring cloud was run.
TODO
- Eureka
- Configserver
- Hystrix Dashboard
- Kafka Broker
- Kafka Bus
- Easy inclusion of default deployables
- H2 Database
- Spring Cloud Dataflow server
- Launcher landing page (Eureka Dashboard works for now)
- Sleuth/Zipkin
- Support external rabbit
- Speedup startup (parallel start?, retry for config server, db and kafka?)
- Cassandra Database
- Client Side Library
- Spring Boot Admin (Not compatible with Brixton)