MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

docker-compose connessione dell'applicazione java a mongodb

A luglio 2019, documentazione docker ufficiale :

Fonte:https://docs.docker.com/compose/compose-file/ #link

Soluzione n. 1:file di ambiente prima dell'avvio

Fondamentalmente centralizziamo tutte le configurazioni in un file con variabili di ambiente ed eseguilo prima di comporre mobile

Il seguente approccio mi ha aiutato in questi scenari:

  • Il tuo docker-compose.yml ha diversi contenitori con complesse dipendenze tra loro
  • Alcuni dei tuoi servizi nella tua composizione mobile devono connettersi a un altro processo nella stessa macchina. Questo processo potrebbe essere un contenitore mobile o meno.
  • Devi condividere variabili tra diversi file di composizione Docker come host, password, ecc.

Passaggi

1.- Crea un file per centralizzare le configurazioni

Questo file potrebbe essere denominato:/env/company_environments con estensione o meno.

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

2.- Usa le variabili env nel tuo docker-compose.yml

contenitore A

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

contenitore B

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

3.- Avvia i tuoi container

Basta aggiungere la sorgente prima dei comandi di composizione mobile:

source /env/company_environments
docker-compose up -d

Soluzione n. 2:host.docker.internal

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

Fondamentalmente usa una funzione della finestra mobile in cui host.docker.internal potrebbe essere utilizzato come ip del server in cui la tua composizione mobile ha avviato diversi contenitori