fondo
Recientemente, algunos amigos le pidieron principiante estibador, quiere docker-compose.yml
pasar 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.yml
el 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 SpEL
expresiones, 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.yml
configuració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