SpringBatchをDockerで環境構築
Spring BatchをDockerで環境構築するためには、以下のステップを踏む必要があります。
これには、Spring Batchアプリケーションの作成、Dockerイメージの作成、およびDockerコンテナでの実行が含まれます。
以下に、詳細な手順と必要なファイルの例を示します。
1. Spring Batchアプリケーションの作成
まず、Spring Batchアプリケーションを作成します。
以下は、基本的なSpring Batchアプリケーションの設定例です。
pom.xml (Mavenプロジェクトの場合):
<dependencies> <!-- Spring Boot Starter Batch --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-batch</artifactId> </dependency> <!-- Spring Boot Starter Web (optional, for testing or additional features) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Database dependencies (example: H2 for in-memory database) --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies>
application.properties:
# Batch Job Configuration spring.batch.job.enabled=false # H2 Database Configuration spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password
BatchConfiguration.java:
import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.annotation.JobScope; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.core.step.tasklet.TaskletStep; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @EnableBatchProcessing public class BatchConfiguration { @Bean public Job job(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) { return jobBuilderFactory.get("job") .start(stepBuilderFactory.get("step").tasklet(tasklet()).build()) .build(); } @Bean @JobScope public Tasklet tasklet() { return (contribution, chunkContext) -> { System.out.println("Spring Batch job is running!"); return RepeatStatus.FINISHED; }; } }
2. Dockerfileの作成
次に、Spring BatchアプリケーションをDockerイメージとしてパッケージングするために、Dockerfileを作成します。
Dockerfile:
# 使用するベースイメージ FROM openjdk:17-jdk-slim # 作業ディレクトリの設定 WORKDIR /app # Mavenビルド成果物をコピー COPY target/myapp.jar /app/myapp.jar # JARファイルを実行 ENTRYPOINT ["java", "-jar", "myapp.jar"]
3. Docker Composeファイルの作成
複数のコンテナを管理するために、docker-compose.ymlを作成することもできます。
例えば、データベースとSpring Batchアプリケーションを連携させるための設定です。
docker-compose.yml:
version: '3.8' services: database: image: "h2:latest" ports: - "9092:9092" environment: - JDBC_URL=jdbc:h2:mem:testdb app: build: . depends_on: - database environment: - SPRING_DATASOURCE_URL=jdbc:h2:mem:testdb - SPRING_DATASOURCE_USERNAME=sa - SPRING_DATASOURCE_PASSWORD=password
4. Dockerイメージのビルドと実行
以下のコマンドを使って、Dockerイメージをビルドし、コンテナを実行します。
# Dockerイメージのビルド docker build -t myapp . # Dockerコンテナの実行 docker run -p 8080:8080 myapp
または、Docker Composeを使用する場合:
# Docker Composeでコンテナを起動 docker-compose up --build
この手順で、Spring BatchアプリケーションをDocker環境で構築し、実行することができます。
各ステップで必要な設定やファイルは、プロジェクトの要件に応じて調整してください。