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

Reinvent your career. Join DEV.

It takes one minute and is worth it for your career.

Get started

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!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay