So implementieren Sie Docker, um Parameter dynamisch an Springboot-Projekte zu übergeben

So implementieren Sie Docker, um Parameter dynamisch an Springboot-Projekte zu übergeben

Hintergrund

Kürzlich fragten mich einige Freunde, die neu bei Docker sind, ob sie Parameter dynamisch über docker-compose.yml an Microservices übergeben möchten, anstatt sie jedes Mal in der Projektkonfigurationsdatei fest zu codieren, dann das Service-Image zu erstellen und es schließlich durch eine Reihe von Prozessen zu verpacken und zu veröffentlichen, um die Konfiguration zu aktualisieren. Ist es also möglich, einige Konfigurationselemente direkt in Umgebungsvariablen in docker-compose.yml einzufügen und das Springboot-Projekt dann automatisch Parameter aus den Umgebungsvariablen abzurufen?

Szenario

Angenommen, es gibt ein Springboot-Projekt mit einem Datenbankkonfigurationselement darin, aber es gibt mehrere Datenbank-IPs in verschiedenen Datenbanktestumgebungen (DEV\SIT\UAT). Wenn Sie dasselbe Springboot-Projektimage verwenden möchten, können Sie die Datenbankkonfiguration jederzeit ändern. Kurz gesagt, die Datenbankkonfiguration Ihrer Springboot-Anwendung sollte extern übergeben und nicht fest codiert werden.


In der Springboot-Anwendung gibt es eine Datenbankkonfiguration wie folgt:

spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8
#Datenbankbenutzernamen konfigurieren spring.datasource.username = sa
#Datenbankkennwort konfigurieren spring.datasource.password = sa

Lösung

Verwenden Sie SpEL -Ausdrücke, um die Datenbankkonfiguration dynamisch aus Umgebungsvariablen abzurufen


Als nächstes ersetzen wir die Datenbankkonfiguration durch einen spEL-Ausdruck in der Springboot-Konfigurationsdatei

#Datenbanklink konfigurieren spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8
#Datenbankbenutzernamen konfigurieren spring.datasource.username = ${DB_USER}
#Datenbankkennwort konfigurieren spring.datasource.password = ${DB_PASSWORD}

Konfigurieren Sie unsere Datenbankparameter in docker-compose.yml

Version: '3'
Leistungen:
 Webseite:
  Neustart: immer
  hängt ab von:
   -db
  Bild: Springboot-App-Bild
  bauen: .
  Häfen:
   8080: 8080
  Umfeld:
   – DB_HOST=192.168.0.11
   – DB_PORT=3306
   – DB_USER=root
   - DB_PASSWORD=123456
   – DB_NAME=db
  Netzwerke:
   - Kreditfazilität-Net
  einsetzen:
   Modus: repliziert
   Replikate: 3
   Neustartrichtlinie:
    Bedingung: bei Fehler
    Verzögerung: 5s
    Max_Versuche: 3
   Konfiguration aktualisieren:
    Parallelität: 1
    Verzögerung: 10s

Auf diese Weise kann unsere Springboot-Anwendung die Datenbankkonfiguration beim Starten des Containerdienstes dynamisch abrufen

Dies ist das Ende dieses Artikels darüber, wie Docker Parameter dynamisch an Springboot-Projekte übergibt. Weitere Informationen zur dynamischen Parameterübergabe von Docker Springboot finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Implementierung der Spring Boot-Frontend- und Backend-Parameterübertragung

<<:  Ein kurzer Vortrag über berechnete Eigenschaften und das Abhören von Eigenschaften in Vue

>>:  Detaillierte Erläuterung der MySQL-Datenzeilen und des Zeilenüberlaufmechanismus

Artikel empfehlen

Vorschläge zur Optimierung der Webseiten-Kopfzeile

Logo-Optimierung: 1. Das Logobild sollte so klein...

7 native JS-Fehlertypen, die Sie kennen sollten

Inhaltsverzeichnis Überblick 1. Bereichsfehler 2....

Drei Möglichkeiten zum Teilen der Komponentenlogik in React

Ohne weitere Umschweife sind dies diese drei Meth...

Sie müssen wahrscheinlich keine Switch-Anweisungen in JavaScript verwenden

Inhaltsverzeichnis Kein Schalter, keine komplexen...

Tutorial zur Änderung des Root-Passworts in MySQL 5.6

1. Nach der Installation von MySQL 5.6 kann es ni...

40 Schriftarten, empfohlen für berühmte Website-Logos

Wissen Sie, welche Schriftarten in den Logo-Desig...

Chinesische Parameterbeschreibung und Verwendungsbeispiele für ffmpeg

1. Wenn ffmpeg Videodateien überträgt, können die...

Detaillierte Erklärung der jQuery-Kettenaufrufe

Inhaltsverzeichnis Kettenanrufe Ein kleiner Koffe...

Ein Bugfix für Tomcats automatisches Herunterfahren

Vorwort Bei einem seit 4 Jahren laufenden Java EE...

MySQL 5.7.17 Winx64 Installations- und Konfigurations-Tutorial

Heute habe ich die MySQL-Datenbank erneut auf mei...