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

Erfahren Sie mehr über die MySQL-Speicher-Engine

Inhaltsverzeichnis Vorwort 1. MySQL-Hauptspeicher...

Detaillierte Erläuterung zum Einrichten des Ressourcencaches in Nginx

Ich wollte schon immer etwas über Caching lernen....

Eine kurze Analyse des HTML-Space-Codes

Wie gut kennen Sie sich mit HTML aus? Wenn Sie jet...

Implementierung einer coolen 3D-Würfeltransformationsanimation in CSS3

Ich liebe das Programmieren, es macht mich glückl...

Ein kurzer Vortrag über die Geschichte von React Router

Wenn Sie React Router verstehen möchten, sollten ...

Eine kurze Diskussion zu this.$store.state.xx.xx in Vue

Inhaltsverzeichnis Sehen Sie sich dies an.$store....

JavaScript+HTML zur Implementierung eines Studenteninformationsmanagementsystems

Inhaltsverzeichnis 1. Einleitung 2. Rendern 3. Co...

Implementierungsschritte für die Paketierung und Optimierung von Vue-Projekten

Inhaltsverzeichnis Verpacken, Starten und Optimie...

Zusammenfassung des Verständnisses des virtuellen DOM in Vue

Es handelt sich im Wesentlichen um ein allgemeine...

CentOS6.8 verwendet cmake zur Installation von MySQL5.7.18

Unter Bezugnahme auf die Online-Informationen hab...

Ideen und Praxis einer mehrsprachigen Lösung für ein Vue.js-Frontend-Projekt

Inhaltsverzeichnis 1. Welche Inhalte müssen üblic...

Lösung für den ONLY_FULL_GROUP_BY-Fehler in Mysql5.7 und höher

Während des jüngsten Entwicklungsprozesses handel...