以前の記事で複数コンテナを扱うdocker composeについてまとめました。
Docker Composeとは、一度に複数のコンテナを作成・実行できるソフトウェアのことです。Docker内に同梱され…
Docker Composeで利用するキーや階層構造の主な記述方法についてまとめていきます。Docker Compose…
今回の記事から2回に分けてdocker composeの実践として、WebAPIサーバーとDBサーバーを作成し、ネットワークやボリュームの設定をして、WebAPIの作成を一括で行います。
WebAPIの完成イメージ
今回のWebAPIはAPIサーバーにJavaのSpring Boot、DBサーバーにPostgresSQLを利用して外部からポート8080でAPIサーバーにアクセスし、DBのデータを取得後レスポンスを返すという簡単なものを作成していきます。
イメージとしては以下のようなものを作成していきます。

APIサーバーを作成する
spring initializrでspringプロジェクトを作成
最初にspring initializrというサイトで空のSpringプロジェクトを作成していきます。
こちらはDockerと直接関係ないので詳細は割愛しますが、画像のような設定値で作成してください。

GENERATEをクリックするとapi.zipファイルがダウンロードされます。
次に任意の場所にフォルダwebapi
を作成し、その中でapi.zipを解凍してください。
解凍後、api.zipは消して構いません。
解凍すると以下のようなディレクトリ構成になると思います。
webapi
└── api
├── HELP.md
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── api
│ │ └── ApiApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── example
└── api
└── ApiApplicationTests.java
Spring プロジェクトを編集
Springプロジェクトを作成したら少し編集していきます。
以下のパスでファイルを作成してください。webapi/api/src/main/java/com/example/api/AnimalController.java
ファイル作成後、以下の内容を記述してください。
package com.example.api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@RestController
@RequestMapping("/api")
public class AnimalController {
@RequestMapping("/animal")
public String cry(
@RequestParam String animal
) {
return "wang wang";
}
}
こちらの内容はspring bootの内容になるので割愛しますが、/api/animal?animal=〇〇
というURLで’wang wang’という文字列を返却するAPIを作成しています。
イメージを作成しコンテナを起動
では、このspring bootを起動するためのコンテナをカスタムイメージから作成し動作を見てみましょう。
以下のパスにDockerfileを作成してください。/webapi/api/Dockerfile
作成後、次のように記述します。
FROM gradle:7
WORKDIR /api
COPY . .
CMD [ "./gradlew", "bootRun" ]
gradleは、平たくいうと簡単にJavaアプリの依存関係を解決しアプリをビルドできるツールです。
Dockerfileの内容をとても簡単にいうと、ディレクトリをコピーした後コマンドを実行でgradleを使ってspring bootを起動させています。
Dockerfileができたらイメージの作成とコンテナ起動を実施しましょう。
docker image build -t api-image .
docker container run -p 8080:8080 --rm api-image
最終的に画像のようにSpringと表示されて待機状態になれば成功です。

APIの動作確認
では、作成したAPIの動作を確認してみましょう。
Google Chromeなどのブラウザを開き、以下のURLにアクセスしてみてください。
http://localhost:8080/api/animal?animal=dog
アクセスすると以下のように表示されます。

“wang wang”と返ってきており、正常に動作していることがわかります。
ここまで確認できたら、一旦コンテナは停止して削除しましょう。
コンテナを起動しているターミナルでCommand + C
やCtrl + C
を押下すれば止まります。
まとめ
今回はspring bootを使ったwebapiの作成まで行いました。
次回の記事でDBコンテナの作成を行い、2つのコンテナをdocker composeで扱います。
ここまで読んでいただき、ありがとうございました。
それでは、また。