@Nullable
    @Contract("_, !null, _ -> !null")
    private String getConfigurable(
        @NotNull final String propertyName,
        @Nullable final String defaultValue,
        Properties... propertiesSources
    ) {
        String envVarName = propertyName.replaceAll("\\.", "_").toUpperCase();
        if (!envVarName.startsWith("TESTCONTAINERS_") && !envVarName.startsWith("DOCKER_")) {
            envVarName = "TESTCONTAINERS_" + envVarName;
        }

        if (environment.containsKey(envVarName)) {
            String value = environment.get(envVarName);
            if (!value.isEmpty()) {
                return value;
            }
        }

        for (final Properties properties : propertiesSources) {
            if (properties.get(propertyName) != null) {
                return (String) properties.get(propertyName);
            }
        }

        return defaultValue;
    }
Provides a mechanism for fetching configuration/default settings.
<p>
Configuration may be provided in:
<ul>
    <li>A file in the user's home directory named <code>.testcontainers.properties</code></li>
    <li>A file in the classpath named <code>testcontainers.properties</code></li>
    <li>Environment variables</li>
</ul>
<p>
Note that, if using environment variables, property names are in upper case separated by underscores, preceded by
<code>TESTCONTAINERS_</code>.
core/src/main/java/org/testcontainers/utility/TestcontainersConfiguration.java