Umgebungsvariablen in der Properties-Datei einer Java-Applikation verwenden

bitmuncher

Senior-Nerd
Gibt es einen einfachen Weg wie man Umgebungsvariablen in einer Properties-Datei verwenden kann, ohne dass man dazu extra Handler in der App einbauen muss?

Das Problem etwas ausführlicher: Ich will einen Kafka-Node in einem Docker-Container laufen lassen. Der zugehörige Zookeeper läuft aber auf dem Host. Damit der Kafka-Node weiss, wo er seinen Zookeeper findet, muss in der server.properties eine Zeile wie diese enthalten sein:

Code:
zookeeper.connect=<Hostname/IP>:2181

Mein Plan ist nun die Host-IP mittels Umgebungsvariable an den Container zu übergeben.

Code:
docker run -e HOSTIP=$(myhostip) bitmuncher/kafka

myhostip ist ein Alias zum ermitteln der Host-IP für Docker. Auf diese Weise habe ich dann im Container die IP mittels $HOSTIP zur Verfügung. Nur wie bekomme ich diese in die server.properties?
 
Ich habe mich nun für eine andere Lösung entschieden. Ich referenziere in der server.properties den Zookeeper über den Hostname 'zookeeper'. Diesen setze ich im Container mittels '--add-host=zookeeper:<IP>'. Dadurch umgehe ich das Problem mit den Umgebungsvariablen.
 
Nachtrag: Wer selbst mal etwas mit Kafka rumspielen will, kann sich das Image von Docker-Hub holen.

Code:
docker pull bitmuncher/kafka
docker run --add-host zookeeper:<zookeeper-ip> --name=kafka -d -v /home/kafka/logs:/home/kafka/logs -p 9092:9092 bitmuncher/kafka

Die Einbindung des Kafka-Datadir vom Host aus ist natürlich optional. Der Ordner existiert im Container und kann auch direkt dort genutzt werden. Hat dann allerdings den Nachteil, dass die Daten beim Löschen des Containers auch weg sind.

Zookeeper ist Voraussetzung. Ich nutze einen Zookeeper, der direkt auf dem Host-System läuft, so dass sich die Container dort aufstöpseln können. Als Zookeeper-IP kann man dann die IP des Interfaces 'docker0' verwenden.
 
Zurück
Oben