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

mongod --bind_ip usando docker-compose versão 2


Finalmente consegui conectar os dois contêineres. Minhas descobertas aqui para fins de documentação.

Pontos principais

  • docker-compose a versão 2 cria uma bridge network e adiciona todos os contêineres a ela.
  • mongod não está ciente dessa rede e, portanto, não se vincula a esse ip. Por padrão, vincula apenas a 127.0.0.1
  • mongoimport não foi possível estabelecer a conexão usando o nome do contêiner, embora deva ser traduzido para o ip do contêiner.

Solução

  • Atribua um IP estático para o mongodb por meio da definição explícita de uma network
  • Inicie o contêiner do mongo com --bind_ip sinalizador apontando para esse ip estático
  • Use o endereço IP em vez do nome do host com mongoimport

docker-compose.yml
version: '2'

services:
  mongodb:
    image: mongo:3.2
    ports:
      - "27017:27017"
    networks:
      mongo_net:
        ipv4_address: 172.16.0.1
    command: mongod --bind_ip 127.0.0.1,172.16.0.1

  mongo-seed:
    build: ./mongo-seed
    networks:
      mongo_net:
    depends_on:
      - mongodb

networks:
  mongo_net:
    driver: bridge
    ipam:
      config:
      - subnet: 172.16.0.0/24
        gateway: 172.16.0.254

mongo-seed/Dockerfile
FROM mongo:3.2

COPY init.json /init.json
CMD mongoimport --host 172.16.0.1 --db test --collection users \
   --type json --file /init.json --jsonArray