MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongod --bind_ip usando docker-compose versione 2

Sono finalmente riuscito a collegare entrambi i container. I miei risultati qui a scopo di documentazione.

Punti principali

  • docker-compose la versione 2 crea un bridge rete e vi aggiunge tutti i contenitori.
  • mongod non è a conoscenza di questa rete e quindi non si lega a quell'ip. Per impostazione predefinita, si associa solo a 127.0.0.1
  • mongoimport non è stato possibile stabilire la connessione utilizzando il nome del contenitore, anche se dovrebbe essere tradotto nell'ip del contenitore.

Soluzione

  • Assegna un IP statico al mongodb attraverso la definizione esplicita di una network
  • Inizia il contenitore mongo con --bind_ip flag che punta a quell'ip statico
  • Utilizza l'indirizzo IP invece del nome host con 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

Seme Mongo/File Docker

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