sql >> データベース >  >> NoSQL >> MongoDB

mongod --bind_ip using docker-compose version 2

    ようやく両方のコンテナを接続することができました。文書化のためにここにある私の発見。

    要点

    • docker-compose バージョン2はbridgeを作成します ネットワークに接続し、すべてのコンテナを追加します。
    • mongod はこのネットワークを認識していないため、そのIPにバインドしません。デフォルトでは、127.0.0.1にのみバインドします
    • mongoimport コンテナIPに変換されるはずなのに、コンテナ名を使用して接続を確立できませんでした。

    ソリューション

    • networkの明示的な定義を通じて、mongodbに静的IPを割り当てます
    • --bind_ipを使用してmongoコンテナを初期化します その静的IPを指すフラグ
    • mongoimportでホスト名の代わりにIPアドレスを使用する

    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. MongoDBにフィールドが存在するかどうかを確認するにはどうすればよいですか?

    2. MongoDBのプロパティをテキスト型から日付型に変換するにはどうすればよいですか?

    3. MongoDB $ toInt

    4. フィールドに文字列が含まれているかどうかの確認