11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring Boot on Microsoft Azure

Last updated at Posted at 2018-09-14

Spring BootのWebアプリをPaaSで動かすとき、「手軽」というのを理由にHerokuやCloud Foundry(PWAなど)をメインに利用してきました。しかし、先日Microsoft Azureを調べていたら、App Serviceに簡単にデプロイできるよ~という公式ドキュメントを見つけたので試してみました。

試してみたらホントに「簡単」でした!
2018-09-14_23h01_12.png

上記ドキュメントよりシンプルな手順でデプロイしたのでまとめます。なお、主な手順の違いは以下です。

  • Spring Initializrベース
  • warではなくjarのままデプロイ
  • tomcatの依存性は追加しない
  • SpringBootServletInitializerの継承を使わない

コードはこちら。
https://github.com/kikutaro/AzureSpringBoot

開発環境

手順

Spring Bootのプロジェクト作成

Visual Studio Codeの拡張機能にある「Spring Initializr Java Support」を使って作成します。

「表示」->**「コマンドパレット」**を選択
2018-09-13_20h52_50.png

MSのドキュメントはMavenベースなので、**「Spring Initializr: Generate a Maven Project」**を選択
2018-09-12_23h14_23.png

Javaを選択
2018-09-12_23h14_49.png

GroupIdを入力。「tech.kikutaro」としました。
2018-09-14_22h20_39.png

ArtifactIdを入力。「azurespringboot」としました。
2018-09-14_22h21_32.png

Spring Bootは2.0.5を選択
2018-09-12_23h18_40.png

依存性はWebとDevToolsの2つを選択
2018-09-12_23h18_59.png

2018-09-12_23h19_18.png

以上で完了です。保存すると以下のダイアログが表示されます。「Open it」で開きます。
2018-09-12_23h36_28.png

動作確認

Azureにデプロイする前に簡単なコードを書いて手元で動作確認します。ここではRESTのGETで「Hello, Azure!」と返すだけのコードにしました。

DemoApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@GetMapping("/hello")
	public String hello() {
		return "Hello, Azure!";
	}
}

起動を確認します。

.\mvnw.cmd clean package
.\mvnw.cmd spring-boot:run

ローカル環境へアクセスして動作確認できたらOKです。

2018-09-13_00h10_16.png

Azureへデプロイする準備

MSさんのドキュメントでは、packagingをwarに変えたり、tomcatの依存を追加したり、SpringBootServletInitializerを継承したりと、jettyなど他のServletでも動くようにするための工夫をしていますが、今回は特にこの辺を変更せずに進めました。

本当は以下の設定も不要ですが、デプロイしたアプリのURLが衝突しないようにするために今回は追加しました。

pom.xml
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <!-- add from -->
    <maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
    <!-- add to -->
</properties>

azure-webapp-maven-pluginの設定を追加します。ドキュメントには「」とあります。

なお、最初ドキュメントのまま1.1.0を使って、deploymentTypeをjarにしてみたらエラーになりました。deploymentTypeがjarに対応していない模様です。

2018-09-14_23h16_29.png

最新の1.4.0にしたら問題なくjarが指定できました。

pom.xml
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
	</plugin>
	<!-- add from -->
	<plugin>
	    <groupId>com.microsoft.azure</groupId>
	    <artifactId>azure-webapp-maven-plugin</artifactId>
	    <version>1.4.0</version>
	    <configuration>
	        <resourceGroup>maven-projects</resourceGroup>
	        <appName>${project.artifactId}-${maven.build.timestamp}</appName>
        	<region>westus</region>
	        <javaVersion>1.8</javaVersion>
	        <deploymentType>jar</deploymentType>
	        </configuration>
        </plugin>
        <!-- add to -->
    </plugins>
</build>

Azureへデプロイ

デプロイの前にAzure CLIをインストールしました。

Azure CLIでログインすると、ブラウザが自動起動するのでログイン画面が表示されます。ユーザ名とパスワードを入れてログインします。

az login

あとはデプロイするだけです。

.\mvnw.cmd clean package
.\mvnw.cmd azure-webapp:deploy

デプロイ完了を待ちます。
2018-09-14_23h44_07.png

成功したらAzureのApp Serviceを開いて、デプロイされたアプリケーションを確認します。

2018-09-14_23h12_54.png

アプリケーションを選択したら右上に表示されているURLのリンクをクリックすると作成したページが開けます。

2018-09-14_23h14_45.png

動いた!

2018-09-14_23h01_12.png

細かく手順を書いたので長くみえますが、Herokuなどにデプロイするのと同じくらい手軽でした。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?