概要
今回は、Quarkus API プロジェクトを Native Compile して実行してみるということをやってみようと思います!
前回は、Quarkus は JVM で実行しても高速だ!という記事を出したんですが、やっぱり、せっかく Quarkus を使ってるのだから、Native Compile したいでしょ!という動機です。
ということで、まずプロジェクトから作成していきましょう!
Quarkus のプロジェクトの始め方の詳細はこちらの記事を参考にしてください!そして、前提として GraalVM はインストール済みで PATH も通しておいてください!
DockerFile の確認
プロジェクトを作成すると、以下のフォルダ構成になっていて、
src / main / docker
の配下に Dockerfile.native というファイルがあると思います。こちらが native compile 参照するファイルになります。
ちなみに、ファイルの中身はこんな感じです。
このファイルのコメントアウト部分に、コンパイルの方法が書かれていて親切ですね!
GraalVM を使って Native Compile
では、ここから、実際に Native Compile をやってみましょう!
まず、Maven を使って Native バイナリを作成していきます。以下のコマンドを入力してください。
mvn package -Pnative -Dnative-image.docker-build=true
うまくいけば、以下のような結果になると思います。PCのスペックにもよるかもしれませんが、7分ほどかかりました…
Image の作成
では次に、dockerfile を基に docker image を 作成していきます!
以下のコマンドを入力してください
docker build -f src/main/docker/Dockerfile.native -t quarkus/recipe
以下の結果が出れば OK です!
Successfully とでてますが、実際に image が作成されているかどうかを確認しておきましょう!
docker images
はい。しっかりと image できていますね!
作成した image を実行しよう
最後に作成した image を実行してみましょう。
以下のコマンドを入力してください!
docker run -i -rm -p 8080:8080 quarkus/recipe
最後に、curl でエンドポイントを叩いて確認してもらえれば終了です!
これで、native compile で quarkus を実行が終わりです!最初の Native バイナリを作成するところで 7分ほどかかりましたが、image の実行はかなり早かったです!
SpringBoot のプロジェクトを image にして実行をしてみるとその速さは一目瞭然だと思います。
まとめ
今回は、Quarkus API のプロジェクトを GraalVM を使って Native compile して実行してみました。
基本的には、というかほぼすべて、コマンドやWebで作ったプロジェクトであれば既存の docker ファイルに手順が載っていて特に困ったことはありませんでした!
実行してみた感想としては、実行スピードはほんとに早かったです。JVM実行でも速さ!という記事を書いていたんですけど、それを超える速さでびっくりしました。速いとは下調べで分かっていたんですけど、やっぱり自分でやってみるとより速さが実感できていいですね。
コメント