Maison > Java > javaDidacticiel > le corps du texte

Quelle est la méthode pour injecter dynamiquement une configuration dans Springboot et définir des variables d'environnement avec Docker ?

WBOY
Libérer: 2023-05-10 14:37:13
avant
1353 Les gens l'ont consulté

1. Springboot injecte dynamiquement les informations de configuration.

C'est une question très simple, mais je ne suis pas doué pour me souvenir des commandes. Je sais juste comment utiliser jar -jar pour ajouter quelques paramètres lors du démarrage du projet springboot dont je me souviens. les paramètres spécifiques. Je ne sais pas comment configurer ces commandes, je vais donc les résumer brièvement ici.

springboot configuration priorité configuration par défaut

1. Définissez l'adresse de connexion à la base de données url Pack pour vide.

#这里是数据库配置 数据库的连接地址 现在我把url设置为空然后打包jar
spring:
  datasource:
    #数据源基本配置
    username: root
    password: jishuzhai
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: 
    type: com.alibaba.druid.pool.DruidDataSource
Copier après la connexion

2. Démarrage du test.

java -jar brief-plus_oa.jar #La tentative de démarrage de l'application signalera l'erreur suivante
#Échec de la configuration d'une source de données : l'attribut 'url' n'est pas spécifié et aucune source de données intégrée n'a pu être configurée.

3. Injectez les paramètres pour démarrer.

Ce -D augmente ma compréhension des commandes d'exécution Java

java -jar -Dspring.datasource.url="jdbc:mysql:// 127.0.0.1 :3306/brief_min?zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8" brief-plus_oa.jar #Démarrez le projet avec succès. Notez que le spring.datasource.url ici doit être cohérent avec les champs de la configuration file# 🎜🎜#

4. Personnalisez le champ des paramètres d'injection.

整个url字段全部注入现在太难输入了,整个url只有ip地址是变化的这里可以简化一下看下面配置:
 
 brief:
  mysql:
    host: #自定义的参数
    
spring:
  datasource:
    #数据源基本配置
    username: root
    password: jishuzhai
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${brief.mysql.host}:3306/brief_min?zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8
    type: com.alibaba.druid.pool.DruidDataSource
重新打包然后运行:
 
java -jar -Dbrief.mysql.host=127.0.0.1 brief-plus_oa.jar #启动成功
Copier après la connexion

5. Injectez plusieurs paramètres.

java -jar -Dspring.profiles.active=dev -DBRIEF.MYSQL.HOST=192.168.2.5 -DSPRING.REDIS.HOST=192.168.2.5 brief-plus_oa.jar #🎜 🎜#

6. Paramètres de démarrage courants.

Définir le fichier de configuration : port, paramètres, etc.

Définir la sortie du journal

Définir les paramètres de la machine virtuelle

Définir encoding# 🎜🎜#

java -jar -Dserver.port=10000 brief-plus_oa.jar #Définir le port

java -jar -DSPRING_PROFILES_ACTIVE=dev brief-plus_oa.jar #Définir le fichier de configuration efficace Définir le répertoire de stockage des fichiers journaux pour dev
java -jar -Dlogging.path=/Users/fuping/Desktop/log brief-plus_oa.jar

java -jar -Dbrief.mysql.host= 127.0.0.1 brief-plus_oa.jar & #Démarrer le processus d'impression id
java -jar -Dfile.encoding=utf-8 brief-plus_oa.jar #Définir l'encodage du fichier à utiliser lorsque le serveur Windows démarre un code tronqué# 🎜🎜#nohup java -jar brief -plus_oa.jar > log.txt 2>&1 & #Démarrez en arrière-plan et saisissez le journal de démarrage dans le fichier log.txt et imprimez l'identifiant du processus
java -Xms256m - Xmx512m brief-plus_oa.jar #Définissez l'adresse mémoire de la machine virtuelle


Notez que les noms de paramètres après -D ne sont pas sensibles à la casse

2. Docker dynamiquement injecte les variables d'environnement env

1.

FROM openjdk:17
# 镜像是从 openjdk:11-jdk-alpin 继承而来的
VOLUME /root/tmp
# 表示挂载了 /root/tmp 目录到容器中
ADD build/libs/brief-plus_oa-0.0.1-SNAPSHOT.jar apprun.jar
# 将bootJar 添加到镜像中根目录下 命令为 apprun.jar
ENTRYPOINT ["java","-jar","/apprun.jar"]
# ENTRYPOINT 在容器启动后执行 java 命令来运行程序
# 设置容器时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 8099
Copier après la connexion

2. Créez l'image Docker.

sudo docker build -t brief_plus_ao:v1.0.0.1 -f ./Dockerfile .
Copier après la connexion

3. Exécutez l'image et injectez la variable d'environnement env. -e

sudo docker run  -p 8090:8090 -e BRIEF.MYSQL.HOST=192.168.31.113  -e SPRING.REDIS.HOST=192.168.31.113 brief_plus_ao:v1.0.0.1
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal