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

docker-compose java-applikationsforbindelse til mongodb

I juli 2019, officiel dokumentation for havnearbejder:

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

Løsning #1:miljøfil før start

Grundlæggende centraliserer vi alle konfigurationer i en fil med miljøvariabler og kør det før docker-compose up

Følgende tilgang hjalp mig i disse scenarier:

  • Din docker-compose.yml har flere containere med komplekse afhængigheder imellem dem
  • Nogle af dine tjenester i din docker-compose skal oprette forbindelse til en anden proces på den samme maskine. Denne proces kan være en docker-container eller ej.
  • Du skal dele variabler mellem flere docker-compose-filer som host, adgangskoder osv.

Trin

1.- Opret én fil for at centralisere konfigurationer

Denne fil kunne hedde:/env/company_environments med forlængelse eller ej.

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

2.- Brug env-variablerne i din docker-compose.yml

beholder A

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

beholder B

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

3.- Start dine containere

Bare tilføj kilde før docker-compose kommandoer:

source /env/company_environments
docker-compose up -d

Løsning #2:host.docker.internal

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

Brug grundlæggende en funktion i docker, hvor host.docker.internal kunne bruges som ip på serveren, hvor din docker-compose har startet flere containere



  1. Forespørger efter en liste over alle adskilte felter i MongoDB-samlingen

  2. opdater dybt indlejret array mongodb

  3. Gem indlejret hash i redis via en node.js-app

  4. Sådan indlæses en hash sikkert og konverterer en værdi til en boolean, hvis den findes