MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

connexion de l'application java docker-compose à mongodb

Au mois de juillet 2019, documentation officielle de docker :

Source :https://docs.docker.com/compose/compose-file/ #liens

Solution #1 :fichier d'environnement avant le démarrage

En gros, nous centralisons toutes les configurations dans un fichier avec des variables d'environnement et exécutez-le avant docker-compose up

L'approche suivante m'a aidé dans ces scénarios :

  • Votre docker-compose.yml a plusieurs conteneurs avec des dépendances complexes entre eux
  • Certains de vos services dans votre docker-compose doivent se connecter à un autre processus sur la même machine. Ce processus peut être un conteneur docker ou non.
  • Vous devez partager des variables entre plusieurs fichiers de composition docker comme l'hôte, les mots de passe, etc

Étapes

1.- Créez un fichier pour centraliser les configurations

Ce fichier pourrait être nommé :/env/company_environments avec extension ou non.

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

2.- Utilisez les variables env dans votre docker-compose.yml

conteneur A

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

conteneur B

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

3.- Démarrez vos conteneurs

Ajoutez simplement la source avant les commandes docker-compose :

source /env/company_environments
docker-compose up -d

Solution #2 :hôte.docker.interne

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

Utilisez essentiellement une fonctionnalité de docker dans laquelle host.docker.internal peut être utilisé comme adresse IP du serveur sur lequel votre docker-compose a démarré plusieurs conteneurs