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

Der Ansichtsbereich im Meta-Tag steuert das Gerätebildschirm-CSS

Code kopieren Der Code lautet wie folgt: <meta...

So verwenden Sie griechische Buchstaben in HTML-Seiten

Griechische Buchstaben sind eine sehr häufig verw...

So lassen Sie DOSBox nach dem Start automatisch Befehle ausführen

Mit DOSBox können Sie DOS unter Windows simuliere...

Eine kurze Einführung in React

Inhaltsverzeichnis 1. CDN-Einführung 1.1 reagiere...

Vue implementiert ein Suchfeld mit einer Lupe

In diesem Artikel erfahren Sie, wie Sie mit Vue e...

Beispielcode zum Zeichnen von Doppelpfeilen in gängigen CSS-Stilen

1. Mehrere Aufrufe eines einzelnen Pfeils Sobald ...

Über die Überlappung von Randwert und vertikalem Rand in CSS

Rand paralleler Boxen (Überlappung doppelter Ränd...

Mehrere Möglichkeiten, Python-Programme im Linux-Hintergrund auszuführen

1. Die erste Methode besteht darin, den Befehl un...

Detaillierte Erklärung der Verwendung und Erfahrung mit tinyMCE

Detaillierte Erklärung der tinyMCE-Verwendung Ini...

Zusammenfassung der MySQL-Indexkenntnisse

Die Einrichtung eines MySQL-Index ist für den eff...

CSS3 realisiert eine springende Ballanimation

Normalerweise besuche ich gerne die Sonderseiten ...

Erklärung des Konzepts und der Verwendung von Like in MySQL

Like bedeutet auf Chinesisch „wie“, aber wenn es ...