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

MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)

String-Extraktion ohne Trennzeichen Fragenanforde...

Tutorial zu HTML-Tabellen-Tags (27): Zell-Hintergrundbild-Attribut BACKGROUND

Wir können ein Hintergrundbild für die Zelle fest...

Vue implementiert ein einfaches Einkaufswagenbeispiel

In diesem Artikel wird der spezifische Code von V...

So zeigen Sie den Status von Remote-Serverdateien in Linux an

Wie unten dargestellt: Der Testbefehl stellt fest...

So installieren Sie PostgreSQL und PostGIS mit yum auf CentOS7

1. Aktualisieren Sie die Yum-Quelle Die PostgreSQ...

Wie Sie die redundanten Felder der Datenbank sinnvoll nutzen

Privot ist die Zwischentabelle von Viele-zu-viele...

Lösung zum Vergessen des MySQL-Datenbankkennworts unter MAC

Schnelle Lösung zum Vergessen des MySQL-Datenbank...

Kurze Analyse der verschiedenen Versionen des mysql.data.dll-Treibers

Hier ist der MySQL-Treiber mysql.data.dll Beachte...

Spezielle Methode zum Hinzufügen von Fremdschlüsseleinschränkungen in MySQL

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Implementierung des gemeinsamen Grid-Layouts

Keine Lücken auf beiden Seiten, Lücken zwischen j...