Mongo with Docker Composer

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>
Mongo with Docker Composer
Show Buttons
Hide Buttons