diff --git a/build-parent/pom.xml b/build-parent/pom.xml
index 202332f3d2791..1e0019c22d764 100644
--- a/build-parent/pom.xml
+++ b/build-parent/pom.xml
@@ -86,9 +86,10 @@
docker.io/postgres:14.1
docker.io/mariadb:10.6
- docker.io/ibmcom/db2:11.5.5.0
- mcr.microsoft.com/mssql/server:2019-CU8-ubuntu-16.04
- docker.io/gvenzl/oracle-xe:21.3.0-slim
+ docker.io/ibmcom/db2:11.5.7.0
+ mcr.microsoft.com/mssql/server:2019-CU15-ubuntu-20.04
+ docker.io/mysql:8.0
+ docker.io/gvenzl/oracle-xe:21-slim
4.13.2
diff --git a/extensions/devservices/common/pom.xml b/extensions/devservices/common/pom.xml
index 6e95538d213ed..0bfc2c543a11d 100644
--- a/extensions/devservices/common/pom.xml
+++ b/extensions/devservices/common/pom.xml
@@ -40,13 +40,4 @@
quarkus-core
-
-
-
-
- src/main/resources
- true
-
-
-
diff --git a/extensions/devservices/common/src/main/java/io/quarkus/devservices/common/ConfigureUtil.java b/extensions/devservices/common/src/main/java/io/quarkus/devservices/common/ConfigureUtil.java
index 23401eecc139e..fbd23fe8f2156 100644
--- a/extensions/devservices/common/src/main/java/io/quarkus/devservices/common/ConfigureUtil.java
+++ b/extensions/devservices/common/src/main/java/io/quarkus/devservices/common/ConfigureUtil.java
@@ -4,7 +4,9 @@
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.util.Collections;
+import java.util.Map;
import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.Network;
@@ -12,6 +14,8 @@
public final class ConfigureUtil {
+ private static final Map DEVSERVICES_PROPS = new ConcurrentHashMap<>();
+
private ConfigureUtil() {
}
@@ -44,25 +48,25 @@ public static String configureSharedNetwork(GenericContainer> container, Strin
}
public static String getDefaultImageNameFor(String devserviceName) {
- var imageName = LazyProperties.INSTANCE.getProperty(devserviceName + ".image");
+ var imageName = DEVSERVICES_PROPS.computeIfAbsent(devserviceName, ConfigureUtil::loadProperties)
+ .getProperty("default.image");
if (imageName == null) {
- throw new IllegalArgumentException("No default image configured for " + devserviceName);
+ throw new IllegalArgumentException("No default.image configured for " + devserviceName);
}
return imageName;
}
- private static class LazyProperties {
-
- private static final Properties INSTANCE;
-
- static {
- var tccl = Thread.currentThread().getContextClassLoader();
- try (InputStream in = tccl.getResourceAsStream("devservices.properties")) {
- INSTANCE = new Properties();
- INSTANCE.load(in);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
+ private static Properties loadProperties(String devserviceName) {
+ var fileName = devserviceName + "-devservice.properties";
+ try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName)) {
+ if (in == null) {
+ throw new IllegalArgumentException(fileName + " not found on classpath");
}
+ var properties = new Properties();
+ properties.load(in);
+ return properties;
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
}
}
}
diff --git a/extensions/devservices/common/src/main/resources/devservices.properties b/extensions/devservices/common/src/main/resources/devservices.properties
deleted file mode 100644
index bb5d7f35bc0b3..0000000000000
--- a/extensions/devservices/common/src/main/resources/devservices.properties
+++ /dev/null
@@ -1 +0,0 @@
-mariadb.image=${mariadb.image}
diff --git a/extensions/devservices/db2/src/main/java/io/quarkus/devservices/db2/deployment/DB2DevServicesProcessor.java b/extensions/devservices/db2/src/main/java/io/quarkus/devservices/db2/deployment/DB2DevServicesProcessor.java
index 99a45bf1c1e8e..3d1a02510b3a5 100644
--- a/extensions/devservices/db2/src/main/java/io/quarkus/devservices/db2/deployment/DB2DevServicesProcessor.java
+++ b/extensions/devservices/db2/src/main/java/io/quarkus/devservices/db2/deployment/DB2DevServicesProcessor.java
@@ -24,11 +24,6 @@ public class DB2DevServicesProcessor {
private static final Logger LOG = Logger.getLogger(DB2DevServicesProcessor.class);
- /**
- * If you update this remember to update the container-license-acceptance.txt in the tests
- */
- public static final String TAG = "11.5.5.1";
-
@BuildStep
DevServicesDatasourceProviderBuildItem setupDB2(
List devServicesSharedNetworkBuildItem) {
@@ -70,7 +65,7 @@ private static class QuarkusDb2Container extends Db2Container {
private String hostName = null;
public QuarkusDb2Container(Optional imageName, OptionalInt fixedExposedPort, boolean useSharedNetwork) {
- super(DockerImageName.parse(imageName.orElse("ibmcom/db2:" + DB2DevServicesProcessor.TAG))
+ super(DockerImageName.parse(imageName.orElseGet(() -> ConfigureUtil.getDefaultImageNameFor("db2")))
.asCompatibleSubstituteFor(DockerImageName.parse("ibmcom/db2")));
this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;
diff --git a/extensions/devservices/db2/src/main/resources/db2-devservice.properties b/extensions/devservices/db2/src/main/resources/db2-devservice.properties
new file mode 100644
index 0000000000000..cb92427f36d6c
--- /dev/null
+++ b/extensions/devservices/db2/src/main/resources/db2-devservice.properties
@@ -0,0 +1 @@
+default.image=${db2.image}
diff --git a/extensions/devservices/mariadb/pom.xml b/extensions/devservices/mariadb/pom.xml
index 8ee4e2c4acf7d..261b711299f3d 100644
--- a/extensions/devservices/mariadb/pom.xml
+++ b/extensions/devservices/mariadb/pom.xml
@@ -46,6 +46,12 @@
+
+
+ src/main/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/devservices/mariadb/src/main/resources/mariadb-devservice.properties b/extensions/devservices/mariadb/src/main/resources/mariadb-devservice.properties
new file mode 100644
index 0000000000000..2284c83eb4d22
--- /dev/null
+++ b/extensions/devservices/mariadb/src/main/resources/mariadb-devservice.properties
@@ -0,0 +1 @@
+default.image=${mariadb.image}
diff --git a/extensions/devservices/mssql/pom.xml b/extensions/devservices/mssql/pom.xml
index d309ba56a6621..8c1439d22ed07 100644
--- a/extensions/devservices/mssql/pom.xml
+++ b/extensions/devservices/mssql/pom.xml
@@ -46,6 +46,12 @@
+
+
+ src/main/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/devservices/mssql/src/main/java/io/quarkus/devservices/mssql/deployment/MSSQLDevServicesProcessor.java b/extensions/devservices/mssql/src/main/java/io/quarkus/devservices/mssql/deployment/MSSQLDevServicesProcessor.java
index f89a53b2e4bcb..4b9d4fab083b9 100644
--- a/extensions/devservices/mssql/src/main/java/io/quarkus/devservices/mssql/deployment/MSSQLDevServicesProcessor.java
+++ b/extensions/devservices/mssql/src/main/java/io/quarkus/devservices/mssql/deployment/MSSQLDevServicesProcessor.java
@@ -24,11 +24,6 @@ public class MSSQLDevServicesProcessor {
private static final Logger LOG = Logger.getLogger(MSSQLDevServicesProcessor.class);
- /**
- * If you update this remember to update the container-license-acceptance.txt in the tests
- */
- public static final String TAG = "2019-CU10-ubuntu-20.04";
-
@BuildStep
DevServicesDatasourceProviderBuildItem setupMSSQL(
List devServicesSharedNetworkBuildItem) {
@@ -69,7 +64,7 @@ private static class QuarkusMSSQLServerContainer extends MSSQLServerContainer {
public QuarkusMSSQLServerContainer(Optional imageName, OptionalInt fixedExposedPort, boolean useSharedNetwork) {
super(DockerImageName
- .parse(imageName.orElse(MSSQLServerContainer.IMAGE + ":" + MSSQLDevServicesProcessor.TAG))
+ .parse(imageName.orElseGet(() -> ConfigureUtil.getDefaultImageNameFor("mssql")))
.asCompatibleSubstituteFor(MSSQLServerContainer.IMAGE));
this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;
diff --git a/extensions/devservices/mssql/src/main/resources/mssql-devservice.properties b/extensions/devservices/mssql/src/main/resources/mssql-devservice.properties
new file mode 100644
index 0000000000000..df1e7b96365de
--- /dev/null
+++ b/extensions/devservices/mssql/src/main/resources/mssql-devservice.properties
@@ -0,0 +1 @@
+default.image=${mssql.image}
diff --git a/extensions/devservices/mysql/pom.xml b/extensions/devservices/mysql/pom.xml
index 25b0ef64ed4be..797c5b1984eba 100644
--- a/extensions/devservices/mysql/pom.xml
+++ b/extensions/devservices/mysql/pom.xml
@@ -46,6 +46,12 @@
+
+
+ src/main/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/devservices/mysql/src/main/java/io/quarkus/devservices/mysql/deployment/MySQLDevServicesProcessor.java b/extensions/devservices/mysql/src/main/java/io/quarkus/devservices/mysql/deployment/MySQLDevServicesProcessor.java
index 2e6c37c5cfebe..0947aacb927ed 100644
--- a/extensions/devservices/mysql/src/main/java/io/quarkus/devservices/mysql/deployment/MySQLDevServicesProcessor.java
+++ b/extensions/devservices/mysql/src/main/java/io/quarkus/devservices/mysql/deployment/MySQLDevServicesProcessor.java
@@ -24,7 +24,6 @@ public class MySQLDevServicesProcessor {
private static final Logger LOG = Logger.getLogger(MySQLDevServicesProcessor.class);
- public static final String TAG = "8.0.24";
public static final String MY_CNF_CONFIG_OVERRIDE_PARAM_NAME = "TC_MY_CNF";
@BuildStep
@@ -75,8 +74,8 @@ private static class QuarkusMySQLContainer extends MySQLContainer {
public QuarkusMySQLContainer(Optional imageName, OptionalInt fixedExposedPort, boolean useSharedNetwork) {
super(DockerImageName
- .parse(imageName.orElse("docker.io/" + MySQLContainer.IMAGE + ":" + MySQLDevServicesProcessor.TAG))
- .asCompatibleSubstituteFor(DockerImageName.parse(MySQLContainer.IMAGE)));
+ .parse(imageName.orElseGet(() -> ConfigureUtil.getDefaultImageNameFor("mysql")))
+ .asCompatibleSubstituteFor(DockerImageName.parse(MySQLContainer.NAME)));
this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;
}
diff --git a/extensions/devservices/mysql/src/main/resources/mysql-devservice.properties b/extensions/devservices/mysql/src/main/resources/mysql-devservice.properties
new file mode 100644
index 0000000000000..8aa3b4a9fbaf4
--- /dev/null
+++ b/extensions/devservices/mysql/src/main/resources/mysql-devservice.properties
@@ -0,0 +1 @@
+default.image=${mysql.image}
diff --git a/extensions/devservices/oracle/pom.xml b/extensions/devservices/oracle/pom.xml
index 71ace29410d62..4f15257cf5686 100644
--- a/extensions/devservices/oracle/pom.xml
+++ b/extensions/devservices/oracle/pom.xml
@@ -46,6 +46,12 @@
+
+
+ src/main/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/devservices/oracle/src/main/java/io/quarkus/devservices/oracle/deployment/OracleDevServicesProcessor.java b/extensions/devservices/oracle/src/main/java/io/quarkus/devservices/oracle/deployment/OracleDevServicesProcessor.java
index 90836d4aa4e8e..0f7b87ebb409f 100644
--- a/extensions/devservices/oracle/src/main/java/io/quarkus/devservices/oracle/deployment/OracleDevServicesProcessor.java
+++ b/extensions/devservices/oracle/src/main/java/io/quarkus/devservices/oracle/deployment/OracleDevServicesProcessor.java
@@ -25,7 +25,6 @@ public class OracleDevServicesProcessor {
private static final Logger LOG = Logger.getLogger(OracleDevServicesProcessor.class);
public static final String IMAGE = "gvenzl/oracle-xe";
- public static final String TAG = "21.3.0-slim";
public static final String DEFAULT_DATABASE_USER = "quarkus";
public static final String DEFAULT_DATABASE_PASSWORD = "quarkus";
public static final String DEFAULT_DATABASE_NAME = "quarkusdb";
@@ -74,8 +73,7 @@ private static class QuarkusOracleServerContainer extends OracleContainer {
public QuarkusOracleServerContainer(Optional imageName, OptionalInt fixedExposedPort,
boolean useSharedNetwork) {
super(DockerImageName
- .parse(imageName
- .orElse("docker.io/" + OracleDevServicesProcessor.IMAGE + ":" + OracleDevServicesProcessor.TAG))
+ .parse(imageName.orElseGet(() -> ConfigureUtil.getDefaultImageNameFor("oracle")))
.asCompatibleSubstituteFor(OracleDevServicesProcessor.IMAGE));
this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;
diff --git a/extensions/devservices/postgresql/pom.xml b/extensions/devservices/postgresql/pom.xml
index 08d0fda8d2684..e88013895eab5 100644
--- a/extensions/devservices/postgresql/pom.xml
+++ b/extensions/devservices/postgresql/pom.xml
@@ -46,6 +46,12 @@
+
+
+ src/main/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/devservices/postgresql/src/main/java/io/quarkus/devservices/postgresql/deployment/PostgresqlDevServicesProcessor.java b/extensions/devservices/postgresql/src/main/java/io/quarkus/devservices/postgresql/deployment/PostgresqlDevServicesProcessor.java
index 72ca1ae477c34..32fb572e75bba 100644
--- a/extensions/devservices/postgresql/src/main/java/io/quarkus/devservices/postgresql/deployment/PostgresqlDevServicesProcessor.java
+++ b/extensions/devservices/postgresql/src/main/java/io/quarkus/devservices/postgresql/deployment/PostgresqlDevServicesProcessor.java
@@ -26,8 +26,6 @@ public class PostgresqlDevServicesProcessor {
private static final Logger LOG = Logger.getLogger(PostgresqlDevServicesProcessor.class);
- public static final String TAG = "14.1";
-
@BuildStep
ConsoleCommandBuildItem psqlCommand(DevServicesLauncherConfigResultBuildItem devServices) {
return new ConsoleCommandBuildItem(new PostgresCommand(devServices));
@@ -76,8 +74,7 @@ private static class QuarkusPostgreSQLContainer extends PostgreSQLContainer {
public QuarkusPostgreSQLContainer(Optional imageName, OptionalInt fixedExposedPort, boolean useSharedNetwork) {
super(DockerImageName
- .parse(imageName
- .orElse("docker.io/" + PostgreSQLContainer.IMAGE + ":" + PostgresqlDevServicesProcessor.TAG))
+ .parse(imageName.orElseGet(() -> ConfigureUtil.getDefaultImageNameFor("postgresql")))
.asCompatibleSubstituteFor(DockerImageName.parse(PostgreSQLContainer.IMAGE)));
this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;
diff --git a/extensions/devservices/postgresql/src/main/resources/postgresql-devservice.properties b/extensions/devservices/postgresql/src/main/resources/postgresql-devservice.properties
new file mode 100644
index 0000000000000..79ceb7ad67215
--- /dev/null
+++ b/extensions/devservices/postgresql/src/main/resources/postgresql-devservice.properties
@@ -0,0 +1 @@
+default.image=${postgres.image}
diff --git a/extensions/jdbc/jdbc-db2/deployment/pom.xml b/extensions/jdbc/jdbc-db2/deployment/pom.xml
index 848db0271a49e..fa6a956ca2403 100644
--- a/extensions/jdbc/jdbc-db2/deployment/pom.xml
+++ b/extensions/jdbc/jdbc-db2/deployment/pom.xml
@@ -51,6 +51,12 @@
+
+
+ src/test/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/jdbc/jdbc-db2/deployment/src/test/resources/container-license-acceptance.txt b/extensions/jdbc/jdbc-db2/deployment/src/test/resources/container-license-acceptance.txt
index 655bf081a1372..62d2b5ed5f19e 100644
--- a/extensions/jdbc/jdbc-db2/deployment/src/test/resources/container-license-acceptance.txt
+++ b/extensions/jdbc/jdbc-db2/deployment/src/test/resources/container-license-acceptance.txt
@@ -1 +1 @@
-ibmcom/db2:11.5.5.1
+${db2.image}
diff --git a/extensions/jdbc/jdbc-mssql/deployment/pom.xml b/extensions/jdbc/jdbc-mssql/deployment/pom.xml
index 919f95389f615..efab90a4dacc6 100644
--- a/extensions/jdbc/jdbc-mssql/deployment/pom.xml
+++ b/extensions/jdbc/jdbc-mssql/deployment/pom.xml
@@ -51,6 +51,12 @@
+
+
+ src/test/resources
+ true
+
+
maven-compiler-plugin
diff --git a/extensions/jdbc/jdbc-mssql/deployment/src/test/resources/container-license-acceptance.txt b/extensions/jdbc/jdbc-mssql/deployment/src/test/resources/container-license-acceptance.txt
index c1229a8fea769..f485095721de0 100644
--- a/extensions/jdbc/jdbc-mssql/deployment/src/test/resources/container-license-acceptance.txt
+++ b/extensions/jdbc/jdbc-mssql/deployment/src/test/resources/container-license-acceptance.txt
@@ -1 +1 @@
-mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-20.04
+${mssql.image}
\ No newline at end of file
diff --git a/extensions/reactive-mssql-client/deployment/src/test/resources/container-license-acceptance.txt b/extensions/reactive-mssql-client/deployment/src/test/resources/container-license-acceptance.txt
index c1229a8fea769..c56b7f31fee91 100644
--- a/extensions/reactive-mssql-client/deployment/src/test/resources/container-license-acceptance.txt
+++ b/extensions/reactive-mssql-client/deployment/src/test/resources/container-license-acceptance.txt
@@ -1 +1 @@
-mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-20.04
+${mssql.image}
diff --git a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/pom.xml b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/pom.xml
index a1aaa819f9456..4c962329c7230 100644
--- a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/pom.xml
+++ b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/pom.xml
@@ -11,6 +11,7 @@
11
UTF-8
11
+ @db2.image@
@@ -56,6 +57,12 @@
+
+
+ src/test/resources
+ true
+
+
io.quarkus
diff --git a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/src/test/resources/container-license-acceptance.txt b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/src/test/resources/container-license-acceptance.txt
index 655bf081a1372..62d2b5ed5f19e 100644
--- a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/src/test/resources/container-license-acceptance.txt
+++ b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-db2/src/test/resources/container-license-acceptance.txt
@@ -1 +1 @@
-ibmcom/db2:11.5.5.1
+${db2.image}
diff --git a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/pom.xml b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/pom.xml
index 58a3fea5e14e1..f9fc551ac7ab5 100644
--- a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/pom.xml
+++ b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/pom.xml
@@ -11,6 +11,7 @@
11
UTF-8
11
+ @mssql.image@
@@ -56,6 +57,12 @@
+
+
+ src/test/resources
+ true
+
+
io.quarkus
diff --git a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/src/test/resources/container-license-acceptance.txt b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/src/test/resources/container-license-acceptance.txt
index c1229a8fea769..f485095721de0 100644
--- a/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/src/test/resources/container-license-acceptance.txt
+++ b/integration-tests/container-image/maven-invoker-way/src/it/container-build-jib-with-mssql/src/test/resources/container-license-acceptance.txt
@@ -1 +1 @@
-mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-20.04
+${mssql.image}
\ No newline at end of file
diff --git a/integration-tests/jpa-mysql/pom.xml b/integration-tests/jpa-mysql/pom.xml
index df9c4b347a3ad..b638df3885d84 100644
--- a/integration-tests/jpa-mysql/pom.xml
+++ b/integration-tests/jpa-mysql/pom.xml
@@ -15,7 +15,6 @@
jdbc:mysql://localhost:3306/hibernate_orm_test?allowPublicKeyRetrieval=true
- mysql:8.0.22
diff --git a/integration-tests/jpa-oracle/README.md b/integration-tests/jpa-oracle/README.md
index cb09ba7795d01..67d46b63cd958 100644
--- a/integration-tests/jpa-oracle/README.md
+++ b/integration-tests/jpa-oracle/README.md
@@ -22,7 +22,7 @@ Authentication parameters might need to be changed in the Quarkus configuration
### Starting Oracle via docker
```
-docker run --memory-swappiness=0 --rm=true --name=HibernateTestingOracle -p 1521:1521 -e ORACLE_PASSWORD=hibernate_orm_test gvenzl/oracle-xe:21.3.0-slim
+docker run --memory-swappiness=0 --rm=true --name=HibernateTestingOracle -p 1521:1521 -e ORACLE_PASSWORD=hibernate_orm_test gvenzl/oracle-xe:21-slim
```
This will start a local instance with the configuration matching the parameters used by the integration tests of this module.
diff --git a/integration-tests/reactive-oracle-client/README.md b/integration-tests/reactive-oracle-client/README.md
index 38d9bfbd6dc6f..cadf9da2093bf 100644
--- a/integration-tests/reactive-oracle-client/README.md
+++ b/integration-tests/reactive-oracle-client/README.md
@@ -23,7 +23,7 @@ Authentication parameters might need to be changed in the Quarkus configuration
### Starting Oracle via docker
```
-docker run --memory-swappiness=0 --rm=true --name=HibernateTestingOracle -p 1521:1521 -e ORACLE_PASSWORD=hibernate_orm_test gvenzl/oracle-xe:21.3.0-slim
+docker run --memory-swappiness=0 --rm=true --name=HibernateTestingOracle -p 1521:1521 -e ORACLE_PASSWORD=hibernate_orm_test gvenzl/oracle-xe:21-slim
```
This will start a local instance with the configuration matching the parameters used by the integration tests of this module.