本記事で書くこと
- Dockerを使ってSpring Frameworkのローカル環境を作っていきます。
- 最終的には、Dockerを使って構築したコンテナへCURLを実行し、期待する結果が返ってくるところまでやります。
筆者の環境
- MacOS Big Sur 11.4
- Docker version 20.10.7, build f0df350
- docker-compose version 1.29.2, build 5becea4c
構築する環境
- Spring Framework 5.3.23
- Spring Boot Starter 2.7.4
- OpenJDK 17
やること
- STSでプロジェクト作成
- Controller作成
- Dockerfile作成
- docker-compose.yaml作成
- ビルド
STSでプロジェクト作成
- STSとはSpring Frameworkでの開発をサポートしてくれるIDEのことです
- 以下の公式サイトから皆さんの環境に合わせてダウンロードしてください
- STSの
File > New > New Project
の順にクリック - 以下のような画面が出てくるので、
Spring Starter Project
をクリック

- プロジェクト設定を書いていきます
- 初心者の方は、以下の項目に適切なものを入力してください
- Name(=プロジェクト名です)
- Group
- Description(プロジェクトの説明)
- Package(パッケージ名)

ちなみに本ブログでは、Gradleを使った開発をしていくので、特に理由がなければGradle Projectを選択してください。
- 次に依存関係をインストールします
- ここでは簡易的なプロジェクトにするため、
Spring Web
のみインストールします。

- この画面では特にすることはありません
- 右下の
Finish
をクリックしてください

- これでプロジェクトが作成されました

Controller作成
- アクセスされた時に適当な文字列を返すAPIのControllerを作成します
src > main > java > com.nothingbehind.spring.sample
配下にcontrollers
というパッケージを作成してください- 作成した
controllers
パッケージの中に、IndexController.java
を作成します

- この
IndexController.java
の中身を以下のようにします
package com.nothingbehind.spring.sample.controllers;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController {
@GetMapping("/")
public String index() {
return "hello";
}
}
- SpringではControllerにRoutingを書きます
- この例だと、
/
にアクセスされた時、hello
という文字列を返す、という処理になっています
Dockerfile作成
- docker環境の元となるDockerfileをプロジェクト直下に作成します
FROM openjdk:17
ENV APP /app
COPY . $APP
WORKDIR $APP
RUN microdnf install findutils
docker-compose.yaml作成
- Dockerfileと同様に、プロジェクト直下に
docker-compose.yaml
を作成します
version: "3"
services:
app:
build: .
tty: true
ports:
- 8080:8080
volumes:
- .:/app
command: ["sh", "gradlew", "bootRun"]
- 8080番ポートでアクセス可能とします
- コンテナ起動時にサーバが起動するように、
command
には起動コマンドを書いています
ビルド
- コンテナの中に入ってgradleのビルドコマンドを実行します
$ docker-compose run --rm app sh
# sh gradlew build
...
...
Starting a Gradle Daemon (subsequent builds will be faster)
BUILD SUCCESSFUL in 1m 32s
7 actionable tasks: 7 executed
コンテナを起動する
- コンテナを起動します
$ docker-compose up
CURLでアクセスしてみる
curl http://localhost:8080
hello