sql >> Database >  >> NoSQL >> MongoDB

mongod --bind_ip met behulp van docker-compose versie 2

Het lukte me eindelijk om beide containers met elkaar te verbinden. Mijn bevindingen hier voor documentatiedoeleinden.

Belangrijkste punten

  • docker-compose versie 2 maakt een bridge netwerk en voegt er alle containers aan toe.
  • mongod is niet op de hoogte van dit netwerk en bindt zich daarom niet aan dat ip. Bindt standaard alleen aan 127.0.0.1
  • mongoimport kon geen verbinding tot stand brengen met de containernaam, ook al zou het vertaald moeten worden naar het container-ip.

Oplossing

  • Wijs een statisch IP-adres toe aan de mongodb via de expliciete definitie van een network
  • Init mongo-container met --bind_ip vlag die naar dat statische ip wijst
  • Gebruik ip-adres in plaats van hostnaam met 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. Gegeven een lijst met id's, wat is de beste manier om op te vragen welke id's niet in de verzameling voorkomen?

  2. MongoParseError:opties useCreateIndex, useFindAndModify worden niet ondersteund

  3. Hoe Apache CouchDB op CentOS 8 te installeren

  4. 'Kon de socketbestandsfout in MongoDB 3.0 niet ontkoppelen'