Skip to content

Commit 6256208

Browse files
authored
Merge pull request quarkusio#34223 from gsmet/container-env
Provide a way to push env variables to dev services containers
2 parents d8d084a + 58c3748 commit 6256208

File tree

32 files changed

+175
-27
lines changed

32 files changed

+175
-27
lines changed

extensions/datasource/deployment-spi/src/main/java/io/quarkus/datasource/deployment/spi/DevServicesDatasourceContainerConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
public class DevServicesDatasourceContainerConfig {
88

99
private final Optional<String> imageName;
10+
private final Map<String, String> containerEnv;
1011
private final Map<String, String> containerProperties;
1112
private final Map<String, String> additionalJdbcUrlProperties;
1213
private final OptionalInt fixedExposedPort;
@@ -18,6 +19,7 @@ public class DevServicesDatasourceContainerConfig {
1819
private final Map<String, String> volumes;
1920

2021
public DevServicesDatasourceContainerConfig(Optional<String> imageName,
22+
Map<String, String> containerEnv,
2123
Map<String, String> containerProperties,
2224
Map<String, String> additionalJdbcUrlProperties,
2325
OptionalInt port,
@@ -28,6 +30,7 @@ public DevServicesDatasourceContainerConfig(Optional<String> imageName,
2830
Optional<String> initScriptPath,
2931
Map<String, String> volumes) {
3032
this.imageName = imageName;
33+
this.containerEnv = containerEnv;
3134
this.containerProperties = containerProperties;
3235
this.additionalJdbcUrlProperties = additionalJdbcUrlProperties;
3336
this.fixedExposedPort = port;
@@ -43,6 +46,10 @@ public Optional<String> getImageName() {
4346
return imageName;
4447
}
4548

49+
public Map<String, String> getContainerEnv() {
50+
return containerEnv;
51+
}
52+
4653
public Map<String, String> getContainerProperties() {
4754
return containerProperties;
4855
}

extensions/datasource/deployment/src/main/java/io/quarkus/datasource/deployment/devservices/DevServicesDatasourceProcessor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ private RunningDevService startDevDb(
276276
try {
277277
DevServicesDatasourceContainerConfig containerConfig = new DevServicesDatasourceContainerConfig(
278278
dataSourceBuildTimeConfig.devservices.imageName,
279+
dataSourceBuildTimeConfig.devservices.containerEnv,
279280
dataSourceBuildTimeConfig.devservices.containerProperties,
280281
dataSourceBuildTimeConfig.devservices.properties,
281282
dataSourceBuildTimeConfig.devservices.port,

extensions/datasource/runtime/src/main/java/io/quarkus/datasource/runtime/DevServicesBuildTimeConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ public class DevServicesBuildTimeConfig {
2828
@ConfigItem
2929
public Optional<String> imageName;
3030

31+
/**
32+
* Environment variables that are passed to the container.
33+
*/
34+
@ConfigItem
35+
public Map<String, String> containerEnv;
36+
3137
/**
3238
* Generic properties that are passed for additional container configuration.
3339
* <p>

extensions/devservices/db2/src/main/java/io/quarkus/devservices/db2/deployment/DB2DevServicesProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
5353
Labels.addDataSourceLabel(container, datasourceName);
5454
Volumes.addVolumes(container, containerConfig.getVolumes());
5555

56+
container.withEnv(containerConfig.getContainerEnv());
57+
5658
containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
5759
containerConfig.getCommand().ifPresent(container::setCommand);
5860
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

extensions/devservices/mariadb/src/main/java/io/quarkus/devservices/mariadb/deployment/MariaDBDevServicesProcessor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class MariaDBDevServicesProcessor {
3636
DevServicesDatasourceProviderBuildItem setupMariaDB(
3737
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem) {
3838
return new DevServicesDatasourceProviderBuildItem(DatabaseKind.MARIADB, new DevServicesDatasourceProvider() {
39+
@SuppressWarnings("unchecked")
3940
@Override
4041
public RunningDevServicesDatasource startDatabase(Optional<String> username, Optional<String> password,
4142
Optional<String> datasourceName, DevServicesDatasourceContainerConfig containerConfig,
@@ -56,6 +57,8 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
5657
Labels.addDataSourceLabel(container, datasourceName);
5758
Volumes.addVolumes(container, containerConfig.getVolumes());
5859

60+
container.withEnv(containerConfig.getContainerEnv());
61+
5962
if (containerConfig.getContainerProperties().containsKey(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME)) {
6063
container.withConfigurationOverride(
6164
containerConfig.getContainerProperties().get(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME));

extensions/devservices/mssql/src/main/java/io/quarkus/devservices/mssql/deployment/MSSQLDevServicesProcessor.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ public class MSSQLDevServicesProcessor {
2727

2828
private static final Logger LOG = Logger.getLogger(MSSQLDevServicesProcessor.class);
2929

30+
/**
31+
* Using SA doesn't work with all collations so let's use the lowercase version instead.
32+
*/
33+
private static final String DEFAULT_USERNAME = "sa";
34+
3035
@BuildStep
3136
DevServicesDatasourceProviderBuildItem setupMSSQL(
3237
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem) {
3338
return new DevServicesDatasourceProviderBuildItem(DatabaseKind.MSSQL, new DevServicesDatasourceProvider() {
39+
@SuppressWarnings("unchecked")
3440
@Override
3541
public RunningDevServicesDatasource startDatabase(Optional<String> username, Optional<String> password,
3642
Optional<String> datasourceName, DevServicesDatasourceContainerConfig containerConfig,
@@ -49,6 +55,8 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
4955
Labels.addDataSourceLabel(container, datasourceName);
5056
Volumes.addVolumes(container, containerConfig.getVolumes());
5157

58+
container.withEnv(containerConfig.getContainerEnv());
59+
5260
containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
5361
containerConfig.getCommand().ifPresent(container::setCommand);
5462
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);
@@ -60,7 +68,7 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
6068
return new RunningDevServicesDatasource(container.getContainerId(),
6169
container.getEffectiveJdbcUrl(),
6270
container.getReactiveUrl(),
63-
container.getUsername(),
71+
DEFAULT_USERNAME,
6472
container.getPassword(),
6573
new ContainerShutdownCloseable(container, "Microsoft SQL Server"));
6674
}

extensions/devservices/mysql/src/main/java/io/quarkus/devservices/mysql/deployment/MySQLDevServicesProcessor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class MySQLDevServicesProcessor {
3535
DevServicesDatasourceProviderBuildItem setupMysql(
3636
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem) {
3737
return new DevServicesDatasourceProviderBuildItem(DatabaseKind.MYSQL, new DevServicesDatasourceProvider() {
38+
@SuppressWarnings("unchecked")
3839
@Override
3940
public RunningDevServicesDatasource startDatabase(Optional<String> username, Optional<String> password,
4041
Optional<String> datasourceName, DevServicesDatasourceContainerConfig containerConfig,
@@ -55,6 +56,8 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
5556
Labels.addDataSourceLabel(container, datasourceName);
5657
Volumes.addVolumes(container, containerConfig.getVolumes());
5758

59+
container.withEnv(containerConfig.getContainerEnv());
60+
5861
if (containerConfig.getContainerProperties().containsKey(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME)) {
5962
container.withConfigurationOverride(
6063
containerConfig.getContainerProperties().get(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME));

extensions/devservices/oracle/src/main/java/io/quarkus/devservices/oracle/deployment/OracleDevServicesProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
6060
Labels.addDataSourceLabel(container, datasourceName);
6161
Volumes.addVolumes(container, containerConfig.getVolumes());
6262

63+
container.withEnv(containerConfig.getContainerEnv());
64+
6365
// We need to limit the maximum amount of CPUs being used by the container;
6466
// otherwise the hardcoded memory configuration of the DB might not be enough to successfully boot it.
6567
// See https://github.com/gvenzl/oci-oracle-xe/issues/64

extensions/devservices/postgresql/src/main/java/io/quarkus/devservices/postgresql/deployment/PostgresqlDevServicesProcessor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ ConsoleCommandBuildItem psqlCommand(DevServicesLauncherConfigResultBuildItem dev
4242
DevServicesDatasourceProviderBuildItem setupPostgres(
4343
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem) {
4444
return new DevServicesDatasourceProviderBuildItem(DatabaseKind.POSTGRESQL, new DevServicesDatasourceProvider() {
45+
@SuppressWarnings("unchecked")
4546
@Override
4647
public RunningDevServicesDatasource startDatabase(Optional<String> username, Optional<String> password,
4748
Optional<String> datasourceName, DevServicesDatasourceContainerConfig containerConfig,
@@ -62,6 +63,8 @@ public RunningDevServicesDatasource startDatabase(Optional<String> username, Opt
6263
Labels.addDataSourceLabel(container, datasourceName);
6364
Volumes.addVolumes(container, containerConfig.getVolumes());
6465

66+
container.withEnv(containerConfig.getContainerEnv());
67+
6568
containerConfig.getAdditionalJdbcUrlProperties().forEach(container::withUrlParam);
6669
containerConfig.getCommand().ifPresent(container::setCommand);
6770
containerConfig.getInitScriptPath().ifPresent(container::withInitScript);

extensions/elasticsearch-rest-client-common/deployment/src/main/java/io/quarkus/elasticsearch/restclient/common/deployment/DevServicesElasticsearchProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ private DevServicesResultBuildItem.RunningDevService startElasticsearch(
207207
container.setPortBindings(List.of(config.port.get() + ":" + config.port.get()));
208208
}
209209
timeout.ifPresent(container::withStartupTimeout);
210+
211+
container.withEnv(config.containerEnv);
210212
container.addEnv("ES_JAVA_OPTS", config.javaOpts);
211213
// Disable security as else we would need to configure it correctly to avoid tons of WARNING in the log
212214
container.addEnv("xpack.security.enabled", "false");

0 commit comments

Comments
 (0)