Update deployment documentation
Change the "cloud deployment" section to cover general "deployment" and add documentation for init.d and systemd support. Closes gh-1117
This commit is contained in:
parent
793481843c
commit
ed57adb5fe
|
|
@ -383,6 +383,18 @@ want the other Boot features but not this one)
|
||||||
|`customConfiguration`
|
|`customConfiguration`
|
||||||
|The name of the custom configuration which is used to populate the nested lib directory
|
|The name of the custom configuration which is used to populate the nested lib directory
|
||||||
(without specifying this you get all compile and runtime dependencies).
|
(without specifying this you get all compile and runtime dependencies).
|
||||||
|
|
||||||
|
|`executable`
|
||||||
|
|Boolean flag to indicate if jar files are fully executable on Unix like operating
|
||||||
|
systems. Defaults to `true`.
|
||||||
|
|
||||||
|
|`embeddedLaunchScript`
|
||||||
|
|The embedded launch script to prepend to the front of the jar if it is fully executable.
|
||||||
|
If not specified the 'Spring Boot' default script will be used.
|
||||||
|
|
||||||
|
|`embeddedLaunchScriptProperties`
|
||||||
|
|Additional properties that to be expanded in the launch script. The default script
|
||||||
|
supports a `mode` property which can contain the values `auto`, `service` or `run`.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,20 @@
|
||||||
[[cloud-deployment]]
|
[[deployment]]
|
||||||
= Deploying to the cloud
|
== Deploying Spring Boot applications
|
||||||
|
|
||||||
[partintro]
|
[partintro]
|
||||||
--
|
--
|
||||||
|
Spring Boot's flexible packaging options provide a great deal of choice when it comes to
|
||||||
|
deploying your application. You can easily deploy Spring Boot applications to a variety
|
||||||
|
of cloud platforms, to a container images (such as Docker) or to virtual/real machines.
|
||||||
|
|
||||||
|
This section covers some of the more common deployment scenarios.
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[[cloud-deployment]]
|
||||||
|
== Deploying to the cloud
|
||||||
|
|
||||||
Spring Boot's executable jars are ready-made for most popular cloud PaaS
|
Spring Boot's executable jars are ready-made for most popular cloud PaaS
|
||||||
(platform-as-a-service) providers. These providers tend to require that you
|
(platform-as-a-service) providers. These providers tend to require that you
|
||||||
"`bring your own container`"; they manage application processes (not Java applications
|
"`bring your own container`"; they manage application processes (not Java applications
|
||||||
|
|
@ -23,12 +35,11 @@ to run packaged within it.
|
||||||
In this section we'll look at what it takes to get the
|
In this section we'll look at what it takes to get the
|
||||||
<<getting-started.adoc#getting-started-first-application, simple application that we
|
<<getting-started.adoc#getting-started-first-application, simple application that we
|
||||||
developed>> in the "`Getting Started`" section up and running in the Cloud.
|
developed>> in the "`Getting Started`" section up and running in the Cloud.
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[[cloud-deployment-cloud-foundry]]
|
[[cloud-deployment-cloud-foundry]]
|
||||||
== Cloud Foundry
|
=== Cloud Foundry
|
||||||
Cloud Foundry provides default buildpacks that come into play if no other buildpack is
|
Cloud Foundry provides default buildpacks that come into play if no other buildpack is
|
||||||
specified. The Cloud Foundry https://github.com/cloudfoundry/java-buildpack[Java buildpack]
|
specified. The Cloud Foundry https://github.com/cloudfoundry/java-buildpack[Java buildpack]
|
||||||
has excellent support for Spring applications, including Spring Boot. You can deploy
|
has excellent support for Spring applications, including Spring Boot. You can deploy
|
||||||
|
|
@ -102,7 +113,7 @@ able to hit the application at the URI given, in this case
|
||||||
|
|
||||||
|
|
||||||
[[cloud-deployment-cloud-foundry-services]]
|
[[cloud-deployment-cloud-foundry-services]]
|
||||||
=== Binding to services
|
==== Binding to services
|
||||||
By default, metadata about the running application as well as service connection
|
By default, metadata about the running application as well as service connection
|
||||||
information is exposed to the application as environment variables (for example:
|
information is exposed to the application as environment variables (for example:
|
||||||
`$VCAP_SERVICES`). This architecture decision is due to Cloud Foundry's polyglot
|
`$VCAP_SERVICES`). This architecture decision is due to Cloud Foundry's polyglot
|
||||||
|
|
@ -142,7 +153,7 @@ auto-configuration support and a `spring-boot-starter-cloud-connectors` starter
|
||||||
|
|
||||||
|
|
||||||
[[cloud-deployment-heroku]]
|
[[cloud-deployment-heroku]]
|
||||||
== Heroku
|
=== Heroku
|
||||||
Heroku is another popular PaaS platform. To customize Heroku builds, you provide a
|
Heroku is another popular PaaS platform. To customize Heroku builds, you provide a
|
||||||
`Procfile`, which provides the incantation required to deploy an application. Heroku
|
`Procfile`, which provides the incantation required to deploy an application. Heroku
|
||||||
assigns a `port` for the Java application to use and then ensures that routing to the
|
assigns a `port` for the Java application to use and then ensures that routing to the
|
||||||
|
|
@ -225,7 +236,7 @@ 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 RedHat public (and enterprise) PaaS solution.
|
||||||
Like Heroku, it works by running scripts triggered by git commits, so you can script
|
Like Heroku, it works by running scripts triggered by git commits, so you can script
|
||||||
the launching of a Spring Boot application in pretty much any way you like as long as the
|
the launching of a Spring Boot application in pretty much any way you like as long as the
|
||||||
|
|
@ -288,14 +299,85 @@ run the app.
|
||||||
|
|
||||||
|
|
||||||
[[cloud-deployment-gae]]
|
[[cloud-deployment-gae]]
|
||||||
== Google App Engine
|
=== Google App Engine
|
||||||
Google App Engine is tied to the Servlet 2.5 API, so you can't deploy a Spring Application
|
Google App Engine is tied to the Servlet 2.5 API, so you can't deploy a Spring Application
|
||||||
there without some modifications. See the <<howto.adoc#howto-servlet-2-5, Servlet 2.5 section>>
|
there without some modifications. See the <<howto.adoc#howto-servlet-2-5, Servlet 2.5 section>>
|
||||||
of this guide.
|
of this guide.
|
||||||
|
|
||||||
|
|
||||||
|
[[deployment-service]]
|
||||||
|
== Installing Spring Boot applications
|
||||||
|
In additional to running Spring Boot applications using `java -jar` it is also possible
|
||||||
|
to execute applications directly on Unix systems (Linux, OSX, FreeBSD etc). This makes it
|
||||||
|
very easy to install and manage Spring Boot applications in common production
|
||||||
|
environments. As long as you are generating '`fully executable`' jars from your build, and
|
||||||
|
you are not using a custom `embeddedLaunchScript`, the following techniques can be used.
|
||||||
|
|
||||||
[[cloud-deployment-whats-next]]
|
|
||||||
|
|
||||||
|
=== Unix/Linux services
|
||||||
|
Spring Boot application can be easily started as Unix/Linux services using either `init.d`
|
||||||
|
or `systemd`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
==== Installation as a init.d (system v) service
|
||||||
|
The default executable script that is embedded into Spring Boot executable jars will act
|
||||||
|
as an `init.d` script when it is symlinked to `/etc/init.d`. The standard `start`, `stop`,
|
||||||
|
`restart` and `status` commands can be used. The script supports the following features:
|
||||||
|
|
||||||
|
* Starts the services as the user that owns the jar file
|
||||||
|
* Tracks application PIDs using `/var/run/<appname>.pid`
|
||||||
|
* Writes console logs to `/var/log/<appname>.log`
|
||||||
|
|
||||||
|
Assuming that you have a Spring Boot application installed in `/var/myapp`, to install a
|
||||||
|
Spring Boot application as an `init.d` service simply create a symlink:
|
||||||
|
|
||||||
|
[indent=0,subs="verbatim,quotes,attributes"]
|
||||||
|
----
|
||||||
|
$ sudo link -s /var/myapp/myapp.jar /etc/init.d/myapp
|
||||||
|
----
|
||||||
|
|
||||||
|
TIP: It is advisable to create a specific user account to run you application. Ensure
|
||||||
|
that you have set the owner of the jar file using `chown` before installing your service.
|
||||||
|
|
||||||
|
Once installed, you can start and stop the service in the usual way. You can also flag the
|
||||||
|
application to start automatically using your standard operating system tools. For example,
|
||||||
|
if you use Debian:
|
||||||
|
|
||||||
|
[indent=0,subs="verbatim,quotes,attributes"]
|
||||||
|
----
|
||||||
|
$ update-rc.d myapp defaults <priority>
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
==== Installation as a systemd service
|
||||||
|
Systemd is the successor to `init.d` scripts, and now being used by many many modern Linux
|
||||||
|
distributions. Although you can continue to use `init.d` script with `systemd`, it is also
|
||||||
|
possible to launch Spring Boot applications using `systemd` '`service`' scripts.
|
||||||
|
|
||||||
|
For example, to run a Spring Boot application installed in `var/myapp` you can add the
|
||||||
|
following script in `/etc/systemd/system/myapp.service`:
|
||||||
|
|
||||||
|
[indent=0]
|
||||||
|
----
|
||||||
|
[Unit]
|
||||||
|
Description=myapp
|
||||||
|
After=syslog.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/var/myapp/myapp.jar
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
----
|
||||||
|
|
||||||
|
TIP: Remember to change the `Description` and `ExecStart` fields for your application.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[[deployment-whats-next]]
|
||||||
== What to read next
|
== What to read next
|
||||||
Check out the http://www.cloudfoundry.com/[Cloud Foundry], https://www.heroku.com/[Heroku]
|
Check out the http://www.cloudfoundry.com/[Cloud Foundry], https://www.heroku.com/[Heroku]
|
||||||
and https://www.openshift.com[Openshift] web sites for more information about the kinds of
|
and https://www.openshift.com[Openshift] web sites for more information about the kinds of
|
||||||
|
|
@ -307,6 +389,3 @@ The next section goes on to cover the _<<spring-boot-cli.adoc#cli, Spring Boot C
|
||||||
or you can jump ahead to read about
|
or you can jump ahead to read about
|
||||||
_<<build-tool-plugins.adoc#build-tool-plugins, build tool plugins>>_.
|
_<<build-tool-plugins.adoc#build-tool-plugins, build tool plugins>>_.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -136,10 +136,9 @@ When you're ready to push your Spring Boot application to production, we've got
|
||||||
== Advanced topics
|
== Advanced topics
|
||||||
Lastly, we have a few topics for the more advanced user.
|
Lastly, we have a few topics for the more advanced user.
|
||||||
|
|
||||||
* *Deploy to the cloud:*
|
* *Deploy Spring Boot Applications:*
|
||||||
<<cloud-deployment.adoc#cloud-deployment-cloud-foundry, Cloud Foundry>> |
|
<<deployment.adoc#cloud-deployment, Cloud Deployment>> |
|
||||||
<<cloud-deployment.adoc#cloud-deployment-heroku, Heroku>> |
|
<<deployment.adoc#deployment-service, OS Service>>
|
||||||
<<cloud-deployment.adoc#cloud-deployment-cloudbees, CloudBees>>
|
|
||||||
* *Build tool plugins:*
|
* *Build tool plugins:*
|
||||||
<<build-tool-plugins.adoc#build-tool-plugins-maven-plugin, Maven>> |
|
<<build-tool-plugins.adoc#build-tool-plugins-maven-plugin, Maven>> |
|
||||||
<<build-tool-plugins.adoc#build-tool-plugins-gradle-plugin, Gradle>>
|
<<build-tool-plugins.adoc#build-tool-plugins-gradle-plugin, Gradle>>
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ include::getting-started.adoc[]
|
||||||
include::using-spring-boot.adoc[]
|
include::using-spring-boot.adoc[]
|
||||||
include::spring-boot-features.adoc[]
|
include::spring-boot-features.adoc[]
|
||||||
include::production-ready-features.adoc[]
|
include::production-ready-features.adoc[]
|
||||||
include::cloud-deployment.adoc[]
|
include::deployment.adoc[]
|
||||||
include::spring-boot-cli.adoc[]
|
include::spring-boot-cli.adoc[]
|
||||||
include::build-tool-plugins.adoc[]
|
include::build-tool-plugins.adoc[]
|
||||||
include::howto.adoc[]
|
include::howto.adoc[]
|
||||||
|
|
|
||||||
|
|
@ -1043,7 +1043,7 @@ If you want to explore some of the concepts discussed in this chapter, you can t
|
||||||
look at the actuator {github-code}/spring-boot-samples[sample applications]. You also
|
look at the actuator {github-code}/spring-boot-samples[sample applications]. You also
|
||||||
might want to read about graphing tools such as http://graphite.wikidot.com/[Graphite].
|
might want to read about graphing tools such as http://graphite.wikidot.com/[Graphite].
|
||||||
|
|
||||||
Otherwise, you can continue on, to read about <<cloud-deployment.adoc#cloud-deployment,
|
Otherwise, you can continue on, to read about <<deployment.adoc#deployment,
|
||||||
'`cloud deployment options`'>> or jump ahead
|
'`deployment options`'>> or jump ahead
|
||||||
for some in-depth information about Spring Boot's
|
for some in-depth information about Spring Boot's
|
||||||
_<<build-tool-plugins.adoc#build-tool-plugins, build tool plugins>>_.
|
_<<build-tool-plugins.adoc#build-tool-plugins, build tool plugins>>_.
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
[partintro]
|
[partintro]
|
||||||
--
|
--
|
||||||
This section goes into more detail about how you should use Spring Boot. It covers topics
|
This section goes into more detail about how you should use Spring Boot. It covers topics
|
||||||
such as build systems, auto-configuration and run/deployment options. We also cover some
|
such as build systems, auto-configuration and how to run your applications. We also cover
|
||||||
Spring Boot best practices. Although there is nothing particularly special about
|
some Spring Boot best practices. Although there is nothing particularly special about
|
||||||
Spring Boot (it is just another library that you can consume), there are a few
|
Spring Boot (it is just another library that you can consume), there are a few
|
||||||
recommendations that, when followed, will make your development process just a
|
recommendations that, when followed, will make your development process just a
|
||||||
little easier.
|
little easier.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue