Mit einer Spring-Boot-Anwendung verwenden wir application.yml-Datei zum Speichern von Eigenschaften. Ich habe eine Aufgabe, um einem Benutzer die Möglichkeit zu geben, einige Eigenschaften beim Starten einer Anwendung zu überschreiben. Unter Berücksichtigung haben wir unsere App Docker-Andocken-Datei dockerisiert, ist der richtige Ort, glaube ich dafür. Ich fand eine Option, die tatsächlich funktioniert, env_file:docker-compose override Anwendungseigenschaften
backend:
build:
context: backend
dockerfile: Dockerfile.backend
restart: always
ports:
- 3000:3000
env_file:
- backend/custom.env
volumes:
- ../m2_repo:/root/.m2/
- ../{APP_NAME}/data_sources:/backend/data_sources/
links:
- database
networks:
main:
aliases:
- backend
Dies löst perfekt meine Aufgabe und alle KEY = außer Kraft setzen Wertepaare in application.yml Eigenschaften vorhanden sind. Aber ich habe 2 Fragen:
Es zeigte sich, dass mehrere Dienste in meinem Docker-compose Datei mit Ich brauche einen separaten env_file für jeden Dienst angeben, die wahrscheinlich nicht sehr bequem ist. Gibt es eine Möglichkeit, eine gemeinsame env_file für die gesamte docker-compose-Datei zu haben?
Ich weiß, dass für docker-compose run-Befehl gibt es eine Option -e, wo ich Schlüssel = Wert-Paare von env Variablen setzen kann. Gibt es eine ähnliche Option für Docker-Compose? Ich meine, um env_file überhaupt nicht zu benutzen.
Warum ist 1) ein Problem ? Erfordern alle Ihre Dienste die gleichen Eigenschaften? Gibt es keine Überschneidungen, wenn Sie eine gemeinsame env_file verwenden? –
Es ist kein Problem, eher suche ich nach einer Option. Meine Eigenschaften sind nicht überlappend, das ist eigentlich der Grund, warum ich eine einzelne env_file statt mehrerer Dateien (eine für jeden Dienst) in Erwägung ziehe. – Viacheslav