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

mongod --bind_ip ved hjælp af docker-compose version 2

Jeg kunne endelig nå at få tilsluttet begge containere. Mine resultater her til dokumentationsformål.

Hovedpunkter

  • docker-compose version 2 opretter en bridge netværk og føjer alle containerne til det.
  • mongod er ikke opmærksom på dette netværk og binder sig derfor ikke til den ip. Som standard binder den kun til 127.0.0.1
  • mongoimport kunne ikke etablere forbindelse ved hjælp af containernavn, selvom det formodes at være oversat til containerens ip.

Løsning

  • Tildel en statisk IP til mongodb'en gennem den eksplicitte definition af et network
  • Init mongo-beholder med --bind_ip flag, der peger på den statiske ip
  • Brug IP-adresse i stedet for værtsnavn 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. node.js gemmer objekter i redis

  2. mongodb sorteringsrækkefølge på _id

  3. Skinner Resque ændre arbejdstagergrænse?

  4. Node.js Mongoose.js streng til ObjectId funktion