MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

conexão de aplicativo java docker-compose para mongodb


Em julho de 2019, documentação oficial do docker:



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

Solução nº 1:arquivo de ambiente antes do início


Basicamente Centralizamos todas as configurações em um arquivo com variáveis ​​de ambiente e execute-o antes de compor docker-up

A abordagem a seguir me ajudou nesses cenários:
  • Seu docker-compose.yml tem vários contêineres com dependências complexas entre eles
  • Alguns de seus serviços no docker-compose precisam se conectar a outro processo na mesma máquina. Esse processo pode ser um contêiner docker ou não.
  • Você precisa compartilhar variáveis ​​entre vários arquivos de composição do docker, como host, senhas, etc

Etapas

1.- Crie um arquivo para centralizar as configurações

Este arquivo pode ser nomeado:/env/company_environments com extensão ou não.
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export MY_TOKEN=123456

2.- Use as variáveis ​​env em seu docker-compose.yml

contêiner A
app_who_needs_mongo:
  environment:
    - MONGO_HOST=$MACHINE_HOST
    - MONGO_PASSWORD=$MONGO_PASSWORD
    - TOKEN=$MY_TOKEN
    - LOG_PATH=$GLOBAL_LOG_PATH/app1

contêiner B
app_who_needs_another_db_in_same_host:
  environment:
    - POSTGRESS_HOST=$MACHINE_HOST
    - LOG_PATH=$GLOBAL_LOG_PATH/app1

3.- Inicialize seus contêineres

Basta adicionar a fonte antes dos comandos docker-compose:
source /env/company_environments
docker-compose up -d

Solução nº 2:host.docker.internal


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

Basicamente, use um recurso do docker no qual host.docker.internal poderia ser usado como o ip do servidor no qual seu docker-compose iniciou vários contêineres