MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongod --bind_ip с помощта на docker-compose версия 2

Най-накрая успях да свържа двата контейнера. Моите констатации тук за целите на документацията.

Основни точки

  • docker-compose версия 2 създава bridge мрежа и добавя всички контейнери към нея.
  • mongod не е наясно с тази мрежа и следователно не се свързва с този ip. По подразбиране се свързва само с 127.0.0.1
  • mongoimport не можа да установи връзка, използвайки името на контейнера, въпреки че се предполага, че то трябва да бъде преведено в IP адреса на контейнера.

Решение

  • Задайте статичен IP за mongodb чрез изричното определение на network
  • Иницииране на монго контейнер с --bind_ip флаг, сочещ към този статичен ip
  • Използвайте ip адрес вместо име на хост с 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Документация на ClusterControl 1.5 – Какво е новото

  2. Грешка при транзакциите в PyMongo:Номерата на транзакциите са разрешени само за член на набор от реплика или mongos

  3. Mongodb v4.0 Transaction, MongoError:Номера на транзакции са разрешени само за член на набор от реплика или mongos

  4. MongoDB:Актуализиране на поддокумента

  5. node.js &express - глобални модули и най-добри практики за структура на приложението