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
Create a directory called docker like the following:
mkdir -p docker/mongodb_data
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');
Run docker-compose to start running the container:
docker-compose down && docker-compose build --no-cache && docker-compose up -d
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
Top comments (1)
Thanks, man, this post helped a lot!