将Spring Boot应用部署到Azure应用服务中的几种方法

2018-07-13  本文已影响0人  erabbit

传统的Java Web应用通常编译为war包,以Servlet的形式放在Tomcat、Jetty等Web容器中运行。Spring Boot通过内嵌Tomcat,将应用编译成jar包的形式,可以通过java -jar filename.jar直接运行。
Azure是微软的公有云服务,在Azure上部署Web应用主要有以下几种方式:

在这几种方式中,最方便的当属应用服务(App Service)。本文整理了官方文档中几种将Spring Boot应用部署到应用服务的具体方法。

1. 通过IDE插件一键发布

这是最简单的方法,Azure提供了Eclipse和IntelliJ IDEA的插件(通过Visual Studio应该也是可以的,没有确认):

上面两篇文章中的示例工程是基于JSP页面的,对于Spring Boot工程,过程也是一样的。
关于IntelliJ IDEA插件的安装与登录国内版账号:

2. 手动创建应用服务,在本地编译Jar包,推送代码

这种方法的原理与第一种完全一样,插件相当于将整个过程自动化了。具体操作步骤详见这篇发表在MSDN博客上的文章:Deploy Java 8 Spring Boot API to Azure App Service – Cloud Solution Architect
其中创建应用服务可以如文中所介绍通过Azure Cloud Shell,也可以通过在本地运行Azure CLI,或者登录到portal,在图形界面中操作。
对于推送代码,文章中介绍的是git方式,插件中用的是FTP。

3. 通过Azure App Service的maven插件

这种方法不需要IDE,可以在命令行完成,并且通过修改pom.xml文件和Application类,将Spring Boot应用编译成了war包。
详见:使用 Maven 和 Azure 将 Spring Boot 应用部署到云中 | Azure Docs,英文原版:
Deploy a Spring Boot app to the cloud with Maven and Azure | Microsoft Docs

4. 使用同样的maven插件,但以docker形式打包和发布

详见:How to use the Maven Plugin for Azure Web Apps to deploy a Spring Boot app in Azure Container Registry to Azure App Service | Microsoft Docs
这种方法与上一种的不同之处首先在于,本地编译出来的不再是war包,也不是jar包,而是docker镜像。上一种使用的示例工程是spring-guides/gs-spring-boot,这一种是spring-guides/gs-spring-boot-docker
并且接下来先将镜像发布到Azure Container Registry,然后再部署到App Service中,对应的pom.xml文件中,在maven插件的配置中少了<deploymentType>,多了<containerSettings>,对比如下:

因为使用了同样的maven插件,两种方法最终部署应用的命令是一样的:mvn azure-webapp:deploy
另外,国内版的Azure应用服务暂时还不支持容器应用,所以这种方法不适用。对比国内版与国际版的应用服务:Azure应用服务 - Azure云计算 vs Azure 应用服务 - 应用托管 | Microsoft Azure

5. 使用IntelliJ的插件发布docker

最后要介绍的方法与上一种一样,在本地编译的是docker项目,并且借助了在第一种方法中介绍过的IDE插件,但最终并没有发布到应用服务,而是发布到了Docker主机上。详见:使用用于 IntelliJ 的 Azure 工具包将 Spring Boot 应用作为 Docker 容器发布 | Azure Docs

补充阅读

持续集成

MySQL数据库

API应用

上一篇 下一篇

猜你喜欢

热点阅读