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

mongod --bind_ip en utilisant docker-compose version 2

J'ai finalement réussi à connecter les deux conteneurs. Mes découvertes ici à des fins de documentation.

Points principaux

  • docker-compose la version 2 crée un bridge réseau et y ajoute tous les conteneurs.
  • mongod n'est pas au courant de ce réseau et ne se lie donc pas à cette adresse IP. Par défaut, se lie uniquement à 127.0.0.1
  • mongoimport n'a pas pu établir de connexion en utilisant le nom du conteneur, même s'il est censé être traduit en adresse IP du conteneur.

Solution

  • Attribuez une adresse IP statique à mongodb via la définition explicite d'un network
  • Initier le conteneur mongo avec --bind_ip drapeau pointant vers cette adresse IP statique
  • Utilisez l'adresse IP au lieu du nom d'hôte avec 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