DEV Community

Shaikh Al Amin
Shaikh Al Amin

Posted on

12 2 1 1

How to run mongodb using docker-compose in ubuntu

Create docker-compose file like the following:

version: '3.7'
services:
  mongodb:
    image: mongo:latest
    container_name: mongodb_contaner
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 12345678
      MONGO_INITDB_DATABASE: chat_app
    command:
      - '--logpath'
      - '/var/log/mongodb/mongod.log'
    ports:
      - 27017:27017
    volumes:
      - ./docker/mongodb_data:/data/db
      - ./docker/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js
Enter fullscreen mode Exit fullscreen mode

Create a directory called docker like the following:

mkdir -p docker/mongodb_data
Enter fullscreen mode Exit fullscreen mode

Create an init-mongo.js inside docker directory and with the following content :

db = db.getSiblingDB('admin');
db.auth('root', '12345678');

db = db.getSiblingDB('chat_app');
db.createUser({
  user: 'app_user',
  pwd: 'password',
  roles: [
    {
      role: 'readWrite',
      db: 'chat_app',
    },
  ],
});

db.createCollection('test_docker');
Enter fullscreen mode Exit fullscreen mode

Run docker-compose to start running the container:

docker-compose down && docker-compose build --no-cache && docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

To check everything is working, SSH into the MongoDB container like the following:

//to SSH into the container
docker exec -it mongodb_contaner bash

mongod --version

//Check admin db connection is working or not
mongosh admin -u root -p

// check default database with newly created by init-mongo.js
show dbs
Enter fullscreen mode Exit fullscreen mode

Top comments (3)

Collapse
 
binshadh profile image
Binshadh Basheer U • Edited

if i shutdown the machine, how to resume without losing any data

Collapse
 
shaikhalamin profile image
Shaikh Al Amin

As the the volume is mounted at ./docker/mongodb_data:/data/db , should keep your data as it is unless you manually remove your mounted volume.

Collapse
 
raulpenate profile image
The Eagle 🦅

Thanks, man, this post helped a lot!

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more