Prerequisite:
Linux Machine.
Am assuming you have successfully install docker and docker-composer. Follow instruction to install docker and for docker-composer.
docker-compose.yml file.
Create a file called docker-compose.yml
in your project directory and paste the following:
version: "3.0"
services:
mongo:
image: mongo
container_name: "your-container-name"
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: '${DB_ROOT_USER}'
MONGO_INITDB_ROOT_PASSWORD: '${DB_ROOT_PW}'
MONGO_INITDB_DATABASE: '${DB_NAME}'
MONGO_INITDB_USERNAME: '${DB_USER}'
MONGO_INITDB_PASSWORD: '${DB_PASSWORD}'
volumes:
- ./init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh
.env file
Create a file called .evn in your project directory or same level of the docker-composer.yml. This is configuration file which is used by docker-composer file.
# Database variables
DB_ROOT_USER=root
DB_ROOT_PW=root
DB_NAME=CR_ITSM
DB_USER=yourdbusername
DB_PASSWORD=yourdbuserpassword
init-mongo.sh file
Create a file called init-mongo.sh, which is basically a shell script that will be invoke whenever mongo container up. Am using this script to create my project database user and password, which i shall use in project to connect to database.
#!/usr/bin/env bash
echo "Setting up mongo user"
echo $MONGO_INITDB_USERNAME
echo $MONGO_INITDB_PASSWORD
mongo -- "$MONGO_INITDB_DATABASE" <<EOF
var rootUser = '$MONGO_INITDB_ROOT_USERNAME';
var rootPassword = '$MONGO_INITDB_ROOT_PASSWORD';
var admin = db.getSiblingDB('admin');
admin.auth(rootUser, rootPassword);
var user = '$MONGO_INITDB_USERNAME';
var passwd = '$MONGO_INITDB_PASSWORD';
db.createUser({user: user, pwd: passwd, roles: [{role: 'readWrite', db: '$MONGO_INITDB_DATABASE'}]});
EOF
That’s it, running following command to up mongo container.
docker-composer up -d mongo
Check your mongo container up and running.
docker ps -a
Stop your mong docker container.
docker-composer stop mongo
Remove container form docker network
docker rm <container-id>