1-2.SpringBoot3✖️Java17を動かすDockerfileを作成する

SpringBoot3(REST API)✖️Next.jsで作るSNSWebアプリケーション

今パートの目標

前回はDockerをインストールするところまで実施しました。
今回はDocker環境でSpringBootを起動するためのDockerfileを作成していきたいと思います。
Dockerについては前回を参考にしてください。

環境について

  • SpringBoot 3.1.5
  • java17
  • macOS Sonoma 14.1.1
  • Docker Desktop 4.18.0

Dockerfileを作成する

Dockerfileとは

Dockerイメージの設計図のことをいいます。Dockerイメージを新規に作成するための手順を記したテキストファイルで、プログラムを動作させるサーバーやミドルウェア、コマンドなどの情報を記載します。

プロジェクトフォルダを作成する

今回作業していくフォルダを作成します。
私の場合は~/develop配下で作業をしていきたいので以下のようにしてプロジェクトフォルダを作成し、プロジェクトフォルダ配下に移動します。

% mkdir ~/develop/share-favplace-api
% cd ~/develop/share-favplace-api

プロジェクトフォルダ配下にDockerfileを作成する

下記コマンドでDockerfileを作成します。

share-favplace-api % touch Dockerfile

Dockerfileの編集

Dockerfileを編集していきます。

FROM openjdk:17-jdk

ARG WORKDIR

ENV HOME=/${WORKDIR} \
    LANG=C.UTF-8 \
    TZ=Asia/Tokyo \
    HOST=0.0.0.0

WORKDIR ${HOME}

RUN microdnf install findutils
FROM <ベースイメージ>:

使用するイメージを指定します。今回はopenjdk:17-jdk(Java17)のイメージを指定しています。

ARG <変数名>

Dockerfile内で使用する変数名を指定します。
「docker-compose.yml」内のargsでセットした値がここに入ります。※詳しくは後ほど

ENV <変数名=値>

Dockerイメージで使用する環境変数を指定します。
ENVを使って設定した環境変数は、イメージからコンテナへ渡されます。
コンテナへ渡されると、コンテナ内で起動したアプリケーションで参照することができます。

WORKDIR <ディレクトリパス>

Dockerfileで定義した命令を実行する、コンテナ内の作業ディレクトリを指定します。

RUN <実行コマンド>

ベースイメージに対して何らかのコマンドを実行する場合に使用します。
RUN microdnf install findutils はfindutilというツールをDocker環境にインストールしてくださいという命令です。
openjdk:17-jdkのイメージではfindutilをインストールしないと「xargs is not available」とエラーが発生します。

補足

Dockerfile内で変数を展開する場合は、\${変数名}、もしくは\$変数名と書きます。

まとめ

以上で、SpringBootを起動するためのDockerfileを作成できました。
次回はSpring Initializrを使用してSpringBootの雛形を作っていきたいと思います。

https://start.spring.io

コメント

タイトルとURLをコピーしました