Azure App Service上でSpring Bootで作ったDockerイメージを動かす

はじめに

Azure App Service上でSpring Bootで作ったDockerイメージを動かしたので、備忘録としてやったことなどを記しておきます。

環境

  • 2020年6月28日時点でのAzure App Service
  • Spring Boot 2.3.1

サンプルアプリの実装

サンプルアプリは何でもよかったので、spring.io/guidesにて公開されているサンプルアプリのうち、「Building a RESTful Web Service」を選び実装しました。

spring.io

Dockerイメージの作成とDocker Hubへのpush

実装したらDockerイメージを作ります。Spring Boot 2.3からは別途Dockerfileを書かずともMavenやGradleのコマンド(mvn spring-boot:build-imagegradle bootBuildImage)を実行するだけでDockerイメージを作ることができます。詳細はMaven-pluginやGradle-pluginのドキュメントを参照してください。

Maven-plugin

docs.spring.io

Gradle-plugin

docs.spring.io

Docker Hubに作成したイメージを上げたいので、イメージ名を変更します。Gradleの場合はbuild.gradleに以下の設定を追記します。

bootBuildImage {
    imageName = "ユーザ名/リポジトリ名"
}

Dockerイメージを作成したらdocker pushコマンドでDocker Hubにイメージをpushしておきます。

see. Docker Hub 上のリポジトリ — Docker-docs-ja 17.06 ドキュメント

Azure App Service上でDockerイメージを指定し、起動する

作成したDockerイメージをAzure App Service上で動かすのは、App Service作成時に「公開」の部分に「Dockerコンテナー」を指定してイメージソースにDocker Hubを指定、イメージ名を指定すればOKです。

f:id:miyohide:20200628151853p:plain

f:id:miyohide:20200628151910p:plain

その後、App Serviceを作成します。

作成後、「構成」をクリックして「アプリケーション設定」の部分に「WEBSITES_PORT」の値として「8080」を指定、保存しておきます。

f:id:miyohide:20200628152516p:plain

see.

docs.microsoft.com

あとはWebアプリのURLにアクセスするとDockerイメージがApp Serviceに読み込まれてWebアプリが起動します。「コンテナーの設定」をクリックするとログを見ることができます。

f:id:miyohide:20200628152745p:plain

以上でDockerイメージをAzure App Service上で動かすことができました。