はじめに
Spring bootアプリケーションをコンテナ化したいと思ったときにやったことを備忘録として書き残しておきます。
前提
- Spring bootアプリケーションは既に作ってあるものとする
- Dockerの基礎知識がある
- Docker hubのアカウントを作っている
本題のみにフォーカスした記事にするため、このような形にしています。ご承知ください。(他の方の記事を参照ください)
Spring bootのDockerイメージを作る
方法は2つあります。
- Cloud Native Buildpacksを使う
- Dockerfileを使う
本記事では1つ目の方法を使います。
コマンドプロンプトを開いて以下の通り進めてください。
cd [アプリ化したいプロジェクトのフォルダのパス]
mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=[docker hubのユーザ名]/[任意のimage名]:[tag]
これだけで簡単にDockerイメージが作れてしまいます。すごいですね...
ちなみにここで私はエラーを吐かれましたが、windowsのシステム環境変数に昔作ったJAVA_HOMEと結び付けていたJavaのバージョンとEclipseで使ってるJavaのバージョンが違っていたのが原因でした。
(mvnwの中身見たらなぜか勝手にJAVA_HOMEのバージョンを使うようにされてた)
Docker上で使う
イメージができているか確認しましょう。この時点ではローカル環境にのみ作られます。
docker images
Docker hubにイメージを登録したいなら以下のコマンドを実行してください。
docker push [Docker hubのユーザ名]/[image名]:[tag]
早速動かしましょう!
docker run -dit --name [コンテナ名] -p 8080:[spring-bootのserver.port] [ユーザ名]/[image名]:[tag]
これでlocalhost:8080で接続できるはずです。
[spring-bootのserver.port]は、特に何もいじっていなければ8080に設定されています。
この数値は、application.propertiesに server.port=ポート番号 を記述することで任意のポート番号に変えれます。
Docker上でSpring bootアプリケーションが待ち受けているポートになるので、他のコンテナのポートと被らないように気を付けましょう。
最後に
Dockerfileの記述から逃れることができるっていうのはCloud Native Buildpacksを使うメリットだと思います。ぜひ使ってみてください。Spring bootはいいぞ。