Acoplable cómo proyecto de participación masa dinámica Springboot

fondo

Recientemente, algunos amigos le pidieron principiante estibador, quiere docker-compose.ymlpasar de forma dinámica los parámetros de la micro-servicio, en lugar de cada vez que un no modificable en el archivo de configuración del proyecto, y luego espejo de servicios de construcción, y finalmente empaquetado y puesto en libertad a través de un proceso en serie con el fin de actualizar la configuración, lo que puede no directamente por docker-compose.ymlel número de elementos de configuración en la variable de entorno, y el proyecto luego springboot recupera automáticamente a partir de las variables de entorno?


escena

Supongamos ahora que hay un proyecto Springboot, que contiene una base de datos de elementos de configuración, pero un entorno de pruebas base de datos diferente (DEV \ SIT \ UAT), múltiples ip base de datos, que desee utilizar el mismo proyecto Springboot imagen, siempre se puede cambiar la base de datos de configuración, . se simplemente configure su Springboot aplicación de base de datos se debe pasar a través de un externo, en lugar de hardcode

Springboot aplicaciones en las que hay una configuración de base de datos es el siguiente:

spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8
#配置数据库用户名
spring.datasource.username = sa
#配置数据库密码
spring.datasource.password = sa

soluciones

El uso de SpELexpresiones, el acceso dinámico a la base de datos de configuración de las variables de entorno
A continuación, damos un lugar destacado en la configuración de la base de datos Springboot reemplazado por la expresión SPEL

#配置数据库链接
spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8
#配置数据库用户名
spring.datasource.username = ${DB_USER}
#配置数据库密码
spring.datasource.password = ${DB_PASSWORD}

En la docker-compose.ymlconfiguración de nuestros parámetros de base de datos

version: '3'
services:
  web:
    restart: always
    depends_on:
      - db
    image: springboot-app-image
    build: .
    ports:
      - 8080:8080
    environment:
      - DB_HOST=192.168.0.11
      - DB_PORT=3306
      - DB_USER=root
      - DB_PASSWORD=123456
      - DB_NAME=db
    networks:
      - credit-facility-net
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 1
        delay: 10s

Por lo que nuestra aplicación Springboot puede adquirir de forma dinámica la configuración de base de datos en los servicios de contenedores de tiempo de arranque

Publicados 121 artículos originales · ganado elogios 330 · Vistas de 400.000 +

Supongo que te gusta

Origin blog.csdn.net/Evan_Leung/article/details/104843815
Recomendado
Clasificación