MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Docker-Compose-Java-Anwendungsverbindung zu Mongodb

Am Juli 2019, offizielle Docker-Dokumentation :

Quelle:https://docs.docker.com/compose/compose-file/ #links

Lösung Nr. 1:Umgebungsdatei vor dem Start

Grundsätzlich zentralisieren wir alle Konfigurationen in einer Datei mit Umgebungsvariablen und führen Sie es vor docker-compose up aus

Der folgende Ansatz hat mir in diesen Szenarien geholfen:

  • Ihr docker-compose.yml hat mehrere Container mit komplexen Abhängigkeiten zwischen ihnen
  • Einige Ihrer Dienste in Ihrem Docker-Compose müssen eine Verbindung zu einem anderen Prozess auf demselben Computer herstellen. Dieser Prozess kann ein Docker-Container sein oder nicht.
  • Sie müssen Variablen zwischen mehreren Docker-Compose-Dateien wie Host, Passwörter usw. teilen

Schritte

1.- Erstellen Sie eine Datei, um Konfigurationen zu zentralisieren

Diese Datei könnte heißen:/env/company_environments mit Erweiterung oder nicht.

export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456

2.- Verwenden Sie die env-Variablen in Ihrer docker-compose.yml

Behälter A

app_who_needs_mongo:
  environment:
    - MONGO_HOST=$MACHINE_HOST
    - MONGO_PASSWORD=$MONGO_PASSWORD
    - TOKEN=$MY_TOKEN
    - LOG_PATH=$GLOBAL_LOG_PATH/app1

Container B

app_who_needs_another_db_in_same_host:
  environment:
    - POSTGRESS_HOST=$MACHINE_HOST
    - LOG_PATH=$GLOBAL_LOG_PATH/app1

3.- Starten Sie Ihre Container

Fügen Sie einfach source vor docker-compose-Befehlen hinzu:

source /env/company_environments
docker-compose up -d

Lösung Nr. 2:host.docker.internal

https://stackoverflow.com/a/63207679/3957754

Verwenden Sie grundsätzlich eine Funktion von Docker, in der host.docker.internal könnte als IP des Servers verwendet werden, auf dem Ihr docker-compose mehrere Container gestartet hat