0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SpringBootでDockerコンテナを作成する

Last updated at Posted at 2024-05-27

概要

SpringBootをベースとしたアプリケーションをコンテナ化する。

なお、M1 Macを使用しているため、platform: linux/x86_64の対応をしている。

APPコンテナを作成する

対応手順

  1. Spring Initializrで新規プロジェクトを作成する
  2. Jarファイルを作成する
  3. Dockerfileを作成する
  4. イメージをビルドし、コンテナの起動する

Spring Initializrで新規プロジェクトを作成する

Spring Initializrを使用すると、GUIもしくは、VSCode上の拡張機能からプロジェクトのテンプレートを作成することができる。

以下のように依存関係などの設定を行い、GenerateをクリックすることでZipファイルとしてプロジェクトのテンプレートをダウンロードすることができる。
スクリーンショット 2024-05-27 20.37.37.png

Jarファイルを作成する

作成したプロジェクト内で以下のコマンドを入力し、Jarファイルを作成する。
この後、生成したJarファイルを使用して、コンテナ上でアプリケーションを起動する。

$ ./gradlew build

Jarファイルは、./build/libsに生成される。

Dockerfileを作成する

以下が作成したDockerfileである。

# from the base image of a jdk 17 container.
FROM eclipse-temurin:17-jdk-alpine

# create a work dir.
WORKDIR /app

# copy a jvm app.
COPY ./build/libs/docker_spring_boot-0.0.1-SNAPSHOT.jar app.jar

# open port 8080 for a jvm app.
EXPOSE 8080

# startup a jvm app.
ENTRYPOINT ["java","-jar","app.jar"]

現時点では、生成したJarファイルをコンテナの/appディレクトリに配置し、これをもとにアプリケーションを起動している。

イメージをビルドし、コンテナの起動する

# イメージを作成する。
$ docker build --no-cache --tag app-hello-spring-boot .

# コンテナを起動する。
$ docker run -dp 127.0.0.1:8080:8080 --name app_container app-hello-spring-boot

例外対応

一応これらの一連の流れからDockerコンテナの生成までは可能となる。
M1 Macを使用しているがために、以下のエラーが表示された。

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

CPUのアーキテクチャが対応していないイメージを使用している場合に発生するエラー。
以下を設定することで、このエラーを回避することができる。

$ docker build --platform=linux/amd64 -t app-hello-spring-boot .

--platformを指定しない場合には、自身のプラットフォーム向けのイメージを取得する。
しかし、M1 Macでは、ARM64に対応していないイメージを選択した場合には、エラーとなってしまう。

--platformは、イメージの構築対象のプラットフォームを指定することができ、このエラーの回避が可能。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?