はじめに
有料化に伴い、仕事ではDocker以外を使っている方も多いのではないでしょうか?今回の記事では、Dockerと互換性があるPodmanを使って、Java、Spring Boot、MariaDBをセットアップする方法を紹介します。
前提条件
- Podmanがインストールされていること
- Pythonとpipがインストールされていること
環境構築の流れ
podman-composeのインストール
最初にpodman-composeをインストールします。podman-composeはPythonで書かれているため、pipを使用します。
pip3 install podman-compose
インストール後に、podman-composeのPathが通っていることを確認します。
which podman-compose
通っていなければ追加します。
echo 'export PATH=$PATH:/Users/yourusername/Library/Python/3.9/bin' >> ~/.bashrc
// または
echo 'export PATH=$PATH:/Users/yourusername/Library/Python/3.9/bin' >> ~/.zshrc
シェルの再読み込み
source ~/.bashrc
// または
source ~/.zshrc
プロジェクトの作成
Spring Initializrを使用してSpring Bootプロジェクトを作成します。
とりあえず今回はMariaDBを使用するので、以下の依存関係を追加してみてください。
- Spring Web
- Spring Batch
- Spring Data JPA
- MariaDB Driver
Dockerfileの作成
プロジェクトのルートディレクトリにDockerfileを作成します。
# ベースイメージとしてOpenJDK 17を使用
FROM openjdk:17-jdk-slim
# 作業ディレクトリを設定
WORKDIR /app
# Mavenビルドのために必要なファイルをコピー
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
# 依存関係をダウンロード
RUN ./mvnw dependency:go-offline
# プロジェクトのソースコードをコピー
COPY src src
# プロジェクトをビルド
RUN ./mvnw package -DskipTests
# アプリケーションを実行
CMD ["java", "-jar", "target/your-app-name.jar"]
docker-compose.ymlの作成
プロジェクトのルートディレクトリにdocker-compose.ymlファイルを作成します。
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=dev
depends_on:
- db
db:
image: mariadb:10.5
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
- "3306:3306"
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
Spring Bootの設定ファイルの更新
src/main/resources/application.propertiesまたはapplication.ymlに、DB接続のための設定を追加します。以下を追記してください。
spring.datasource.url=jdbc:mariadb://db:3306/mydatabase
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
Hello Worldしてみる
src/main/java/com/example/projectname/にHelloController.javaを作成して以下を追加してください。
package com.example.earthquakenotification;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
@RestController
public class HelloController {
@GetMapping("/")
public String hello() {
return "Hello world";
}
}
podman-composeによるビルドと起動
プロジェクトのルートディレクトリで以下のコマンドを実行します。
podman-compose up --build
これで、Java、Spring Boot、MariaDBを使用するための環境が構築されます。
アプリケーションには http://localhost:8080 でアクセスできます!
以下のように、Hello Worldがでたら完了です!(※私の環境では8080は別で使っていたので、8081にしています。)
まとめ
この記事では、podman-composeを使用してJava、Spring Boot、MariaDBをセットアップする方法を紹介しました。Dockerのビジネス利用有料化に伴い、Podmanは優れた代替ツールとして注目されています。Podmanを使用することで、セキュリティ面での利点を享受しながら、既存のDocker環境をスムーズに移行することができます。ぜひこちらの記事が参考になればうれしいです!