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

Dockerfile内のMongorestore

    この回答 の助けを借りて 、Marc Youngの回答、およびDockerfileリファレンスを使用してこれを機能させることができました。

    Dockerfile

    FROM mongo
    
    COPY dump /home/dump
    COPY mongo.sh /home/mongo.sh
    RUN chmod 777 /home/mongo.sh
    
    CMD /home/mongo.sh
    

    mongo.sh

    #!/bin/bash
    
    # Initialize a mongo data folder and logfile
    mkdir -p /data/db
    touch /var/log/mongodb.log
    chmod 777 /var/log/mongodb.log
    
    # Start mongodb with logging
    # --logpath    Without this mongod will output all log information to the standard output.
    # --logappend  Ensure mongod appends new entries to the end of the logfile. We create it first so that the below tail always finds something
    /entrypoint.sh mongod --logpath /var/log/mongodb.log --logappend &
    
    # Wait until mongo logs that it's ready (or timeout after 60s)
    COUNTER=0
    grep -q 'waiting for connections on port' /var/log/mongodb.log
    while [[ $? -ne 0 && $COUNTER -lt 60 ]] ; do
        sleep 2
        let COUNTER+=2
        echo "Waiting for mongo to initialize... ($COUNTER seconds so far)"
        grep -q 'waiting for connections on port' /var/log/mongodb.log
    done
    
    # Restore from dump
    mongorestore --drop /home/dump
    
    # Keep container running
    tail -f /dev/null
    


    1. upsertで更新するときに、mongodb$addToSetを非配列フィールドに設定します

    2. 公式のC#ドライバーを使用して、mongoDBでSQLLike演算子をどのように実行しますか

    3. mongo / node TypeError:コールバックはクエリの関数ではありません

    4. シンプルなパスワード認証で設定されたMongoDBレプリカ