sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur skapar man en DB för MongoDB-behållare vid uppstart?

Här är en annan renare lösning genom att använda docker-compose och en js manus.

Det här exemplet förutsätter att båda filerna (docker-compose.yml och mongo-init.js) ligger i samma mapp.

docker-compose.yml

version: '3.7'

services:
    mongodb:
        image: mongo:latest
        container_name: mongodb
        restart: always
        environment:
            MONGO_INITDB_ROOT_USERNAME: <admin-user>
            MONGO_INITDB_ROOT_PASSWORD: <admin-password>
            MONGO_INITDB_DATABASE: <database to create>
        ports:
            - 27017:27017
        volumes:
            - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro

mongo-init.js

db.createUser(
        {
            user: "<user for database which shall be created>",
            pwd: "<password of user>",
            roles: [
                {
                    role: "readWrite",
                    db: "<database to create>"
                }
            ]
        }
);

Starta sedan helt enkelt tjänsten genom att köra följande docker-compose-kommando

docker-compose up --build -d mongodb 

Obs :Koden i mappen docker-entrypoint-init.d exekveras endast om databasen aldrig har initierats tidigare.



  1. Hur man testar selleri med django på en Windows-maskin

  2. Mongodb aggregat:konvertera datum till en annan tidszon

  3. Hur kunde jag konvertera en byte till en hel hex-sträng?

  4. Beräkna medianen i MongoDB-aggregationsramverket