はじめに
目標は以下になります。
- クラウド上に構築したコンテナリポジトリにビルド環境用のコンテナを配置
- CIの仕組みで上記コンテナを利用
- プロジェクトビルド時、外部NWを介さないような仕組みを構築したい
今回はそんな仕組みを構築する前の検証としてEclipseで作成したSpringBootプロジェクトを手元のコンテナ環境でビルドしてみたいと思います。
以前の記事でReactをフロントにしたWebアプリケーションの作成まで検証できているので、その構成をそのまま流用します。
dockerfileの作成
SpringBootのプロジェクトルートに作成します。
dockerfile
# JDKイメージを指定
FROM eclipse-temurin:21-jdk-alpine
# 作業ディレクトリを設定
WORKDIR /app
# ローカルのプロジェクトファイルをコンテナにコピー
COPY . .
# Gradleを使ってビルド
RUN apk add --no-cache gradle && gradle build -x test
# アプリ実行
CMD ["java", "-jar", "build/libs/backend-0.0.1-SNAPSHOT.jar"]
.dockerignoreの作成
.dockerignore
/build
/.gradle
/bin
*.iml
コンテナビルド&コンテナ起動
docker build -t my-springboot-app .
docker run -p 8080:8080 my-springboot-app
動作確認
localhost:8080
にアクセスして動作確認します。
おわりに
今回はシンプルにdockerイメージ作成時にビルドして、起動時に実行するところまで作成しました。
後々、コンテナをビルド環境として利用するにはCI/CDのパイプライン上で、ソースのコピーを行うことになるので、単純にこのまま流用とはいきませんが、なんとなくのイメージから、こうすれば良いのか。が見えてきたので、引き続き検証していきます。