mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Add example for openshift deployment
Fixes gh-668 (if the asciicdoc compiles)
This commit is contained in:
parent
e104b34106
commit
1567964e14
@ -235,6 +235,63 @@ an extensive https://github.com/CloudBees-community/springboot-gradle-cloudbees
|
||||
that covers the steps that you need to follow when deploying to CloudBees.
|
||||
|
||||
|
||||
[[cloud-deployment-openshift]]
|
||||
=== Openshift
|
||||
https://www.openshift.com/[Openshift] is the RedHat public (and enterprise) PaaS solution.
|
||||
Like Heroku, it works by running scripts triggered by git commits, so you can script
|
||||
the launching of a Spring Boot app in pretty much any way you like as long as the
|
||||
Java runtime is available (which is a standard feature you can ask from at Openshift).
|
||||
To do this you can use the https://www.openshift.com/developers/do-it-yourself[DIY Cartridge]
|
||||
and hooks in your repository under `.openshift/action_scripts`:
|
||||
|
||||
The basic model is to:
|
||||
|
||||
1. Ensure Java and your build tool are installed remotely, e.g. using
|
||||
a `pre_build` hook (Java and Maven are installed by default, Gradle is not)
|
||||
|
||||
2. Use a `build` hook to build your jar (using Maven or Gradle), e.g.
|
||||
|
||||
----
|
||||
#!/bin/bash
|
||||
cd $OPENSHIFT_REPO_DIR
|
||||
mvn package -s .openshift/settings.xml -DskipTests=true
|
||||
----
|
||||
|
||||
3. Add a `start` hook that calls `java -jar ...`
|
||||
|
||||
----
|
||||
#!/bin/bash
|
||||
cd $OPENSHIFT_REPO_DIR
|
||||
nohup java -jar target/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} &
|
||||
----
|
||||
|
||||
4. Use a `stop` hook (since the start is supposed to return cleanly), e.g.
|
||||
|
||||
----
|
||||
#!/bin/bash
|
||||
source $OPENSHIFT_CARTRIDGE_SDK_BASH
|
||||
PID=$(ps -ef | grep java.*\.jar | grep -v grep | awk '{ print $2 }')
|
||||
if [ -z "$PID" ]
|
||||
then
|
||||
client_result "Application is already stopped"
|
||||
else
|
||||
kill $PID
|
||||
fi
|
||||
----
|
||||
|
||||
5. Embed service bindings from environment variables provided by the platform
|
||||
in your `application.properties`, e.g.
|
||||
|
||||
----
|
||||
spring.datasource.url: jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/${OPENSHIFT_APP_NAME}
|
||||
spring.datasource.username: ${OPENSHIFT_MYSQL_DB_USERNAME}
|
||||
spring.datasource.password: ${OPENSHIFT_MYSQL_DB_PASSWORD}
|
||||
----
|
||||
|
||||
There's a blog on https://www.openshift.com/blogs/run-gradle-builds-on-openshift[running Gradle
|
||||
in Openshift] on their website that will get you started with a gradle build to run
|
||||
the app. A http://issues.gradle.org/browse/GRADLE-2871[bug in Gradle] currently prevents you
|
||||
from using Gradle newer than 1.6.
|
||||
|
||||
[[cloud-deployment-whats-next]]
|
||||
== What to read next
|
||||
|
Loading…
Reference in New Issue
Block a user