|
|
@ -226,65 +226,16 @@ Your application should now be up and running on Heroku.
|
|
|
|
|
|
|
|
|
|
|
|
[[cloud-deployment-openshift]]
|
|
|
|
[[cloud-deployment-openshift]]
|
|
|
|
=== OpenShift
|
|
|
|
=== OpenShift
|
|
|
|
https://www.openshift.com/[OpenShift] is the RedHat public (and enterprise) PaaS solution.
|
|
|
|
https://www.openshift.com/[OpenShift] is the Red Hat public (and enterprise) extension of the
|
|
|
|
Like Heroku, it works by running scripts triggered by git commits, so you can script
|
|
|
|
Kubernetes container orchestration platform. Just as in Kubernetes, OpenShift has many
|
|
|
|
the launching of a Spring Boot application in pretty much any way you like as long as the
|
|
|
|
options for installing Spring Boot based applications.
|
|
|
|
Java runtime is available (which is a standard feature you can ask for 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_hooks`:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
[indent=0]
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
cd $OPENSHIFT_REPO_DIR
|
|
|
|
|
|
|
|
mvn package -s .openshift/settings.xml -DskipTests=true
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
3. Add a `start` hook that calls `java -jar ...`
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
[indent=0]
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
|
#!/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.
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
[indent=0]
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
|
#!/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.
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
[indent=0]
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
|
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
|
|
|
|
OpenShift has many resources describing how to deploy Spring Boot applications, which include :
|
|
|
|
Gradle in OpenShift] on their website that will get you started with a gradle build to
|
|
|
|
|
|
|
|
run the app.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* https://blog.openshift.com/using-openshift-enterprise-grade-spring-boot-deployments/[Using the S2I builder]
|
|
|
|
|
|
|
|
* https://access.redhat.com/documentation/en-us/reference_architectures/2017/html-single/spring_boot_microservices_on_red_hat_openshift_container_platform_3/[Architecture guide]
|
|
|
|
|
|
|
|
* https://blog.openshift.com/using-spring-boot-on-openshift/[Running as traditional web application on Wildfly]
|
|
|
|
|
|
|
|
* https://blog.openshift.com/openshift-commons-briefing-96-cloud-native-applications-spring-rhoar/[OpenShift Commons Briefing]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[[cloud-deployment-aws]]
|
|
|
|
[[cloud-deployment-aws]]
|
|
|
|