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
- Use a named volume: For persistent data
- Environment variables: For configuration
- Health check: To make sure MongoDB is ready
- 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.