今パートの目標
前回は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の雛形を作っていきたいと思います。
コメント