sql >> Databasteknik >  >> NoSQL >> MongoDB

mongod --bind_ip med docker-compose version 2

Jag kunde äntligen lyckas koppla ihop båda behållarna. Mina resultat här för dokumentationsändamål.

Huvudpunkter

  • docker-compose version 2 skapar en bridge nätverk och lägger till alla behållare till det.
  • mongod är inte medveten om detta nätverk och binder därför inte till den ip:n. Som standard binds endast till 127.0.0.1
  • mongoimport kunde inte upprätta anslutning med behållarens namn, även om det är tänkt att översättas till behållarens ip.

Lösning

  • Tilldela en statisk IP för mongodb genom den explicita definitionen av ett network
  • Initiera mongo-behållare med --bind_ip flagga som pekar på den statiska ip
  • Använd IP-adress istället för värdnamn med 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


  1. Hur drar man en instans av ett objekt i en array i MongoDB?

  2. Hur man OCH och INTE i MongoDB $textsökning

  3. Slumpmässig post från MongoDB

  4. MongoDB - Sortera resultaten av en fråga