SpringBoot + Docker se da cuenta de la configuración dinámica de atributos

El autor era demasiado joven en ese entonces, a medida que la postura crecía, había una mejor manera: era 9102. Actualícelo nuevamente,
como sigue, en el archivo yml de arranque de primavera

spring:
    redis:
        database: ${REDIS_DATABASE:1}

Preste atención a $ {REDIS_DATABASE: 1}, qué significa esto, si tiene la variable REDIS_DATABASE en su variable de entorno, el valor en su variable de entorno es el principal, si no hay un valor predeterminado, es 1,
por
lo que si es docker, puede Siga la ejecución de Docker con -e = "REDIS_DATABASE = 1",
si se inicia el jar, puede java -jar xx.jar --REDIS_DATABASE = 1,
para especificar dinámicamente los parámetros que necesita cambiar ~


A veces, empaquetaremos el proyecto en una imagen acoplable,
pero debido a las diferentes propiedades de configuración fija en el proyecto,
las cosas que hará Docker después de la ejecución también son diferentes.
Si no puede configurar dinámicamente las propiedades,
esto es algo muy malo. Debido a que puede haber más de una docena de atributos diferentes, la
forma estúpida es cambiar los atributos uno por uno, empacarlos uno por uno y empacarlos en una docena de espejos. Si no prestas atención a los errores, tendrás que reempacarlos.

Así que pensé en una implementación de configuración dinámica a continuación, la
idea es -e "nombre de atributo = valor de atributo" cuando se ejecuta Docker,
cuando se inicia el proyecto Boot, a través de System.getenv ("nombre de atributo"),
después de obtener el valor de atributo, agregue Vaya a la configuración del arranque y
luego trátelo de acuerdo con el negocio
. Escriba el blog por primera vez. Tenga paciencia conmigo por los errores. Si hay un método o idea mejor, por favor avise.

public static void main(String[] args) {

        SpringApplication springApplication = new SpringApplication(YourApplication.class);

        Map<String,Object> map = new HashMap<>();
        String yourPropties = System.getenv("yourPropties");
        if(yourPropties == null || "".equals(yourPropties.trim())){
            throw new NullPointerException("系统没有获取到yourPropties环境变量参数!");
        }else if(SystemParams.yourPropties.get(yourPropties) == null){
            throw new NullPointerException("yourPropties环境变量参数在程序中不存在!");
        }
        logger.info("=================="+yourPropties+"==================");
        map.put("env.yourPropties",yourPropties);
        springApplication.setDefaultProperties(map);
        springApplication.run(args);
    }

Publicado 38 artículos originales · elogiado 17 · vistas 9026

Supongo que te gusta

Origin blog.csdn.net/cainiao1412/article/details/73945144
Recomendado
Clasificación