2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Zunächst erfordert ein Java-Projekt unterschiedliche Umgebungskonfigurationen. Beim Packen werden automatisch die entsprechenden Konfigurationen verwendet. Wie kann man es also erreichen?
Erstellen oder fügen Sie eine application.yml-Datei im Verzeichnis src/main/resources Ihres Spring Boot-Projekts hinzu. Hier sucht Spring Boot standardmäßig nach Konfigurationsdateien. Diese Datei kann allgemeine Konfigurationen hinzufügen.
Anschließend können Sie auch Dateien wie application-test.yml, application-prod.yml usw. im selben Verzeichnis erstellen. Spring Boot erkennt diese profilspezifischen Konfigurationsdateien automatisch. In diesen Dateien können Sie Parameter für verschiedene Umgebungen definieren, z. B. Datenbankadressen, Redis-Cache-Adressen usw.
Das heißt, im Verzeichnis src/main/resources können sich mehrere Dateien wie diese befinden:
application.yml
application-prod.yml
application-test.yml
Anschließend können Sie application-test.yml und application-prod.yml verwenden, um zwei Variablen mit derselben Konfiguration, aber unterschiedlichen Werten zu deklarieren.Zum Beispiel
Anwendungstest.yml:
mysql:
url: https://xx.test.com/mysql
Anwendungsprod.yml:
mysql:
url: https://xx.online.com/mysql
Im Java-Code können Sie diese URL dynamisch verwenden:
@Value("${mysql.url}")
protected String mysqlUrl;
Perfekt.
Wie kann also automatisch die entsprechende profilspezifische.yml-Datei verwendet werden, wenn das System ausgeführt wird?Siehe unten
Schauen wir uns an, wie Umgebungsvariablen Schicht für Schicht vom externen Netzwerk an das Projekt übergeben werden.
Zunächst wird ein Java-Projekt normalerweise von Docker gepackt. Beginnen wir also mit Docker:
docker build -f assistant-web-api/qke/Dockerfile -t docker-registry.qiyi.virtual/mbd-ai/assistant-web-api-test:$tag . --build-arg dc_env=test
Schlüsselwörter,Build-Argument , legen Sie einen Parameter fest, dc_env=test
ARG dc_env
...
RUN mvn -T 8 -DdisableRpm=true -pl '!assistant-web-manager' clean package -Dmaven.test.skip=true -P${dc_env}
Beachten Sie, dass -P das Festlegen eines Profils bedeutet
Der mvn-Befehl im vorherigen Schritt fügte -P hinzu. Wo wird er verwendet? Natürlich steht es in der Marven-Konfigurationsdatei, nämlich pom.xml.
<profiles>
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
<log.env>test</log.env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
<log.env>prod</log.env>
</properties>
</profile>
</profiles>
Oben wurden 2 Umgebungsvariablen hinzugefügt.Für jede Variable werden Eigenschaften festgelegt, d. h.Profil.aktiv
Wo kann dieser Wert verwendet werden?
Verwenden Sie es in der Hauptdatei application.yml!
server:
profiles:
active: @profile.active@
Definieren Sie basierend auf dem Wert der Variable „profile.active“ im vorherigen Schritt, welches Profil verwendet werden soll.
Seitdem wurden die aus dem Docker-Paket definierten Variablen an die Haupt-YML-Datei übergeben. In dieser Datei wird unabhängig davon, welcher Wert server.profiles.active ist, welche Sub-YML-Konfiguration verwendet. Wenn es sich beispielsweise um einen Test handelt, wird die Konfiguration von application-test.yml geladen! ! !
Zuerst wird Marven zuerst synchronisiert. Überprüfen Sie nach der Synchronisierung eine Umgebung.
Als nächstes kompilieren und packen Sie lokal und geben Sie Umgebungsvariablen über -P an:
Klicken Sie abschließend zum Ausführen auf die obere rechte Ecke des Bildes unten. Es wird ein Popup-Fenster zum Bearbeiten angezeigt. Geben Sie im aktiven Profil die entsprechenden Umgebungsvariablen ein, z. B. test
Abschließend können Sie auf Ausführen klicken!