ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

書籍「はじめてのSpring Boot」の感想

これまで .NET を使って開発してきたのですが、仕事で Java を使う機会があったので、「はじめてのSpring Boot」を読みました。

どんな書籍なのか?

この書籍は、これから Spring Boot を学ぼうとしている初心者に向けた入門書です。
Spring Framework の DI やデータアクセスといった基礎から始まり、Spring Boot の良さを解説しながら、ステップバイステップで Web アプリケーションを構築できます。
Spring Boot は、公式ドキュメントが充実していますし、ネット上にも情報は山ほどありますが、体系的に日本語で学習できるところが良かったです。

  1. Spring Boot とは
  2. 速習 Spring Framework
  3. Spring Boot による Web アプリ開発
  4. PaaS 「Cloud Foundry」にデプロイ
  5. Spring Boot におけるテスト

書籍で解説するサンプルプログラムや誤植については、GitHub で公開されているため、すぐにアプリケーションを動かすこともできますし、コードのタイプミスで悩むこともないので安心です。
github.com

Spring Boot アプリケーションを Azure にデプロイする

この書籍では Cloud Foundry にデプロイする方法が紹介されていますが、ここでは Azure にデプロイしてみます。

Azure Web App にデプロイする

Azure Web App にデプロイするためには、Spring Boot アプリケーションを配布するための jar ファイルと Web.config が必要です。
まずは、Maven のコマンドで jar ファイルを作成します。

$ ./mvnw package

次に、jar ファイルのパスを設定した Web.config を作成します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
        arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\demo-0.0.1-SNAPSHOT.jar&quot;">
    </httpPlatform>
  </system.webServer>
</configuration>

Azure ポータルから Advanced Tools(Kudu)を開いて、jar ファイルと Web.config を「d:¥home¥site¥wwwroot」にアップロードすれば、デプロイできます。

f:id:TonyTonyKun:20171130010224p:plain

Azure Web App for Containers にデプロイする

Azure Web App for Containers にデプロイするためには、Spring Boot アプリケーションをコンテナ化する必要があります。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/helloworld-0.0.1-SNAPSHOT.jar app.jar
ENV JAVA_OPTS=""
EXPOSE 8080
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar

Dockerfile を作成し、Docker コマンドでビルドしたイメージを Docker Hub にプッシュしておきます。

$ docker build -t thara0402/sbapp:latest ./
$ docker push thara0402/sbapp:latest

Azure ポータルから Docker Container の画面で、プッシュした Docker イメージの URL を指定すれば、デプロイできます。

f:id:TonyTonyKun:20171130010248p:plain

まとめ

この書籍は、Java や .NET など何かしらの言語での開発経験があり、これから Spring Boot を学びたい人にお勧めできる内容です。
まずは、アプリケーションを作って感触をつかみ、そのあとに、書籍にでてくる用語を詳しく調べたり、Spring Boot の公式ドキュメントを利用して理解を深めていくのが良いと思います。