From 4891841aa80c38fc220f89d9f22aea89a4640ed3 Mon Sep 17 00:00:00 2001
From: martinfrancois <f.martin@fastmail.com>
Date: Fri, 13 Jun 2025 16:24:22 +0200
Subject: [PATCH 1/2] Update testcontainers dependency to the newest version

Co-authored-by: Patrick Baumgartner <patrick.baumgartner@42talents.com>
Signed-off-by: martinfrancois <f.martin@fastmail.com>
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 8f353cc805..94f5e72f1f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -128,7 +128,7 @@
 		<oracle.version>19.26.0.0</oracle.version>
 		<sqlserver.version>11.2.3.jre17</sqlserver.version>
 		<jtds.version>1.3.1</jtds.version>
-		<testcontainers.version>1.20.6</testcontainers.version>
+		<testcontainers.version>1.21.1</testcontainers.version>
 		<jsonassert.version>1.5.3</jsonassert.version>
 		<groovy-jsr223.version>4.0.26</groovy-jsr223.version>
 		<nashorn.version>15.6</nashorn.version>

From e29d1b1ae55a8aeeb494d42cf03a5d737cc7c818 Mon Sep 17 00:00:00 2001
From: martinfrancois <f.martin@fastmail.com>
Date: Fri, 13 Jun 2025 16:49:09 +0200
Subject: [PATCH 2/2] Update testcontainer images to the newest versions

Co-authored-by: Patrick Baumgartner <patrick.baumgartner@42talents.com>
Signed-off-by: martinfrancois <f.martin@fastmail.com>
---
 .../support/MongoDBIntegrationTestConfiguration.java          | 2 +-
 .../test/repository/Db2JobRepositoryIntegrationTests.java     | 2 +-
 .../test/repository/MariaDBJobRepositoryIntegrationTests.java | 2 +-
 .../repository/MySQLJdbcJobRepositoryIntegrationTests.java    | 2 +-
 .../test/repository/MySQLJobRepositoryIntegrationTests.java   | 2 +-
 .../test/repository/OracleJobRepositoryIntegrationTests.java  | 4 ++--
 .../repository/PostgreSQLJobRepositoryIntegrationTests.java   | 2 +-
 .../support/Db2PagingQueryProviderIntegrationTests.java       | 2 +-
 .../support/MariaDBPagingQueryProviderIntegrationTests.java   | 2 +-
 .../support/MySqlPagingQueryProviderIntegrationTests.java     | 2 +-
 .../support/OraclePagingQueryProviderIntegrationTests.java    | 4 ++--
 .../support/PostgresPagingQueryProviderIntegrationTests.java  | 2 +-
 .../batch/item/kafka/KafkaItemReaderIntegrationTests.java     | 2 +-
 .../batch/samples/amqp/AmqpJobFunctionalTests.java            | 2 +-
 14 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java
index 46ccea0ee0..d22cd034ef 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java
@@ -41,7 +41,7 @@
 @EnableBatchProcessing
 class MongoDBIntegrationTestConfiguration {
 
-	private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
+	private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0");
 
 	@Bean(initMethod = "start")
 	public MongoDBContainer mongoDBContainer() {
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/Db2JobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/Db2JobRepositoryIntegrationTests.java
index 3cfb86d413..6f6ba608a5 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/Db2JobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/Db2JobRepositoryIntegrationTests.java
@@ -60,7 +60,7 @@
 class Db2JobRepositoryIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName DB2_IMAGE = DockerImageName.parse("icr.io/db2_community/db2:11.5.9.0");
+	private static final DockerImageName DB2_IMAGE = DockerImageName.parse("icr.io/db2_community/db2:12.1.0.0");
 
 	@Container
 	public static Db2Container db2 = new Db2Container(DB2_IMAGE).acceptLicense();
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MariaDBJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MariaDBJobRepositoryIntegrationTests.java
index b182235fee..b4b2f3b6c5 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MariaDBJobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MariaDBJobRepositoryIntegrationTests.java
@@ -58,7 +58,7 @@
 class MariaDBJobRepositoryIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName MARIADB_IMAGE = DockerImageName.parse("mariadb:10.9.3");
+	private static final DockerImageName MARIADB_IMAGE = DockerImageName.parse("mariadb:11.8");
 
 	@Container
 	public static MariaDBContainer<?> mariaDBContainer = new MariaDBContainer<>(MARIADB_IMAGE);
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJdbcJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJdbcJobRepositoryIntegrationTests.java
index a939075217..a369c21de5 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJdbcJobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJdbcJobRepositoryIntegrationTests.java
@@ -64,7 +64,7 @@ class MySQLJdbcJobRepositoryIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
 	// when implementing https://github.com/spring-projects/spring-batch/issues/3092
-	private static final DockerImageName MYSQL_IMAGE = DockerImageName.parse("mysql:8.0.31");
+	private static final DockerImageName MYSQL_IMAGE = DockerImageName.parse("mysql:9.2");
 
 	@Container
 	public static MySQLContainer<?> mysql = new MySQLContainer<>(MYSQL_IMAGE);
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJobRepositoryIntegrationTests.java
index a9f9d6b784..0296b739c5 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/MySQLJobRepositoryIntegrationTests.java
@@ -58,7 +58,7 @@
 class MySQLJobRepositoryIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName MYSQL_IMAGE = DockerImageName.parse("mysql:8.0.31");
+	private static final DockerImageName MYSQL_IMAGE = DockerImageName.parse("mysql:9.2");
 
 	@Container
 	public static MySQLContainer<?> mysql = new MySQLContainer<>(MYSQL_IMAGE);
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/OracleJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/OracleJobRepositoryIntegrationTests.java
index a663e23276..e5937a2038 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/OracleJobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/OracleJobRepositoryIntegrationTests.java
@@ -52,7 +52,7 @@
 
 /**
  * Official Docker images for Oracle are not publicly available. Oracle support is tested
- * semi-manually for the moment: 1. Build a docker image for oracle/database:11.2.0.2-xe:
+ * semi-manually for the moment: 1. Build a docker image for gvenzl/oracle-free:23.7:
  * <a href=
  * "https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance#running-oracle-database-11gr2-express-edition-in-a-container">...</a>
  * 2. Run the test `testJobExecution`
@@ -66,7 +66,7 @@
 class OracleJobRepositoryIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName ORACLE_IMAGE = DockerImageName.parse("oracle/database:11.2.0.2-xe");
+	private static final DockerImageName ORACLE_IMAGE = DockerImageName.parse("gvenzl/oracle-free:23.7");
 
 	@Container
 	public static OracleContainer oracle = new OracleContainer(ORACLE_IMAGE);
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/PostgreSQLJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/PostgreSQLJobRepositoryIntegrationTests.java
index 88498bebb9..7697b299f2 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/PostgreSQLJobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/test/repository/PostgreSQLJobRepositoryIntegrationTests.java
@@ -58,7 +58,7 @@
 class PostgreSQLJobRepositoryIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName POSTGRESQL_IMAGE = DockerImageName.parse("postgres:13.3");
+	private static final DockerImageName POSTGRESQL_IMAGE = DockerImageName.parse("postgres:17.5");
 
 	@Container
 	public static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>(POSTGRESQL_IMAGE);
diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderIntegrationTests.java
index 3a60d06845..1048e61738 100644
--- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderIntegrationTests.java
+++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderIntegrationTests.java
@@ -42,7 +42,7 @@
 class Db2PagingQueryProviderIntegrationTests extends AbstractPagingQueryProviderIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName DB2_IMAGE = DockerImageName.parse("icr.io/db2_community/db2:11.5.9.0");
+	private static final DockerImageName DB2_IMAGE = DockerImageName.parse("icr.io/db2_community/db2:12.1.0.0");
 
 	@Container
 	public static Db2Container db2 = new Db2Container(DB2_IMAGE).acceptLicense();
diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MariaDBPagingQueryProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MariaDBPagingQueryProviderIntegrationTests.java
index e96aeb1242..8e52b8471e 100644
--- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MariaDBPagingQueryProviderIntegrationTests.java
+++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MariaDBPagingQueryProviderIntegrationTests.java
@@ -39,7 +39,7 @@
 class MariaDBPagingQueryProviderIntegrationTests extends AbstractPagingQueryProviderIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName MARIADB_IMAGE = DockerImageName.parse("mariadb:10.9.3");
+	private static final DockerImageName MARIADB_IMAGE = DockerImageName.parse("mariadb:11.8");
 
 	@Container
 	public static MariaDBContainer<?> mariaDBContainer = new MariaDBContainer<>(MARIADB_IMAGE);
diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderIntegrationTests.java
index 4b1da2044b..844ffed86b 100644
--- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderIntegrationTests.java
+++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderIntegrationTests.java
@@ -39,7 +39,7 @@
 class MySqlPagingQueryProviderIntegrationTests extends AbstractPagingQueryProviderIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName MYSQL_IMAGE = DockerImageName.parse("mysql:8.0.31");
+	private static final DockerImageName MYSQL_IMAGE = DockerImageName.parse("mysql:9.2");
 
 	@Container
 	public static MySQLContainer<?> mysql = new MySQLContainer<>(MYSQL_IMAGE);
diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderIntegrationTests.java
index 23d767c384..71419167aa 100644
--- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderIntegrationTests.java
+++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderIntegrationTests.java
@@ -33,7 +33,7 @@
 
 /**
  * Official Docker images for Oracle are not publicly available. Oracle support is tested
- * semi-manually for the moment: 1. Build a docker image for oracle/database:11.2.0.2-xe:
+ * semi-manually for the moment: 1. Build a docker image for gvenzl/oracle-free:23.7:
  * <a href=
  * "https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance#running-oracle-database-11gr2-express-edition-in-a-container">...</a>
  * 2. Run the test `testJobExecution`
@@ -47,7 +47,7 @@
 class OraclePagingQueryProviderIntegrationTests extends AbstractPagingQueryProviderIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName ORACLE_IMAGE = DockerImageName.parse("oracle/database:11.2.0.2-xe");
+	private static final DockerImageName ORACLE_IMAGE = DockerImageName.parse("gvenzl/oracle-free:23.7");
 
 	@Container
 	public static OracleContainer oracle = new OracleContainer(ORACLE_IMAGE);
diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderIntegrationTests.java
index 44798f79fa..a189e0e3b8 100644
--- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderIntegrationTests.java
+++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderIntegrationTests.java
@@ -39,7 +39,7 @@
 class PostgresPagingQueryProviderIntegrationTests extends AbstractPagingQueryProviderIntegrationTests {
 
 	// TODO find the best way to externalize and manage image versions
-	private static final DockerImageName POSTGRESQL_IMAGE = DockerImageName.parse("postgres:13.3");
+	private static final DockerImageName POSTGRESQL_IMAGE = DockerImageName.parse("postgres:17.5");
 
 	@Container
 	public static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>(POSTGRESQL_IMAGE);
diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/kafka/KafkaItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/kafka/KafkaItemReaderIntegrationTests.java
index 9c348fa6c2..6c8f43b2f9 100644
--- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/kafka/KafkaItemReaderIntegrationTests.java
+++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/kafka/KafkaItemReaderIntegrationTests.java
@@ -64,7 +64,7 @@
 @ExtendWith(SpringExtension.class)
 class KafkaItemReaderIntegrationTests {
 
-	private static final DockerImageName KAFKA_IMAGE = DockerImageName.parse("apache/kafka:3.9.1");
+	private static final DockerImageName KAFKA_IMAGE = DockerImageName.parse("apache/kafka:4.0.0");
 
 	@Container
 	public static KafkaContainer kafka = new KafkaContainer(KAFKA_IMAGE);
diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/samples/amqp/AmqpJobFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/samples/amqp/AmqpJobFunctionalTests.java
index 768ab2b9c8..730ce5575f 100644
--- a/spring-batch-samples/src/test/java/org/springframework/batch/samples/amqp/AmqpJobFunctionalTests.java
+++ b/spring-batch-samples/src/test/java/org/springframework/batch/samples/amqp/AmqpJobFunctionalTests.java
@@ -64,7 +64,7 @@
 @Testcontainers(disabledWithoutDocker = true)
 class AmqpJobFunctionalTests {
 
-	private static final DockerImageName RABBITMQ_IMAGE = DockerImageName.parse("rabbitmq:3");
+	private static final DockerImageName RABBITMQ_IMAGE = DockerImageName.parse("rabbitmq:4.1");
 
 	@Container
 	public static RabbitMQContainer rabbitmq = new RabbitMQContainer(RABBITMQ_IMAGE);