sql >> Base de Datos >  >> NoSQL >> MongoDB

conexión de la aplicación java docker-compose a mongodb

En julio de 2019, documentación oficial de Docker:

Fuente:https://docs.docker.com/compose/compose-file/ #enlaces

Solución #1:archivo de entorno antes de comenzar

Básicamente centralizamos todas las configuraciones en un archivo con variables de entorno y ejecútelo antes de docker-compose up

El siguiente enfoque me ayudó en estos escenarios:

  • Su docker-compose.yml tiene varios contenedores con dependencias complejas entre ellos
  • Algunos de sus servicios en su docker-compose necesitan conectarse a otro proceso en la misma máquina. Este proceso podría ser un contenedor docker o no.
  • Debe compartir variables entre varios archivos docker-compose como host, contraseñas, etc.

Pasos

1.- Cree un archivo para centralizar configuraciones

Este archivo podría llamarse:/env/company_environments con extensión o no.

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 las variables env en tu docker-compose.yml

contenedor A

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

contenedor B

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

3.- Ponga en marcha sus contenedores

Simplemente agregue la fuente antes de los comandos docker-compose:

source /env/company_environments
docker-compose up -d

Solución #2:host.docker.internal

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

Básicamente, use una característica de la ventana acoplable en la que host.docker.internal podría usarse como la ip del servidor en el que su docker-compose ha iniciado varios contenedores