Skillversitas

Docker MongoDB

How to run MongoDB in Docker.

Docker MongoDB

# Run MongoDB
docker run -d \
  --name mongodb \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=secret \
  -v mongodb-data:/data/db \
  -p 27017:27017 \
  mongo:7

docker-compose.yml

version: '3.8'

services:
  database:
    image: mongo:7
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: secret
    volumes:
      - mongodb-data:/data/db
      - ./init.js:/docker-entrypoint-initdb.d/init.js
    ports:
      - "27017:27017"
    networks:
      - app-net

  api:
    build: .
    environment:
      MONGODB_URI: mongodb://admin:secret@database:27017/myapp
    networks:
      - app-net

networks:
  app-net:

volumes:
  mongodb-data:

Use Case: MongoDB Application

# Run MongoDB
docker run -d \
  --name myapp-mongo \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=secret \
  -v mongodb-data:/data/db \
  -p 27017:27017 \
  mongo:7

# Connect to MongoDB
docker exec -it myapp-mongo mongosh -u admin -p secret

Everyday Use Case

Case: A developer needs a MongoDB database.

# Run MongoDB
docker run -d --name mongo -p 27017:27017 mongo:7

# Connect
mongosh mongodb://localhost:27017

# Back up
docker exec mongo mongodump --archive > backup.gz

Best Practices

  1. Use a named volume: For persistent data
  2. Environment variables: For configuration
  3. Health check: To make sure MongoDB is ready
  4. Back up regularly: For data safety

Conclusion

MongoDB in Docker is easy to set up. Use a named volume for persistent data and environment variables for configuration.