Skip to main content

Docker Installation and Management

 # Step 1: Uninstall older versions of Docker if they exist

sudo dnf remove docker \

                docker-client \

                docker-client-latest \

                docker-common \

                docker-latest \

                docker-latest-logrotate \

                docker-logrotate \

                docker-engine


# Step 2: Add Docker's official repository

sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo


# Step 3: Install Docker Engine

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


# Step 4: Start and enable Docker service

sudo systemctl start docker

sudo systemctl enable docker


# Step 5: Verify that Docker is installed and running

sudo systemctl status docker


# Check Docker version

docker --version


# Step 6: Run a test container to confirm installation

sudo docker run hello-world


# Step 7: (Optional) Allow non-root user to run Docker commands

sudo usermod -aG docker $USER

newgrp docker


# Step 8: Enable Docker to start on boot

sudo systemctl enable docker.service

sudo systemctl enable containerd.service

Project Deployment
This is project is docker based deployment consist of following services.
1) MongoDB
2) Mongo Express (GUI)
It is admin interface to connect, manage MongoDB.
3) Express JS (Api's)

1) Download Mongo Image.
Download mongo image using docker hub command. This command will download image and run it as a container.

Command
--docker run -d \
  -p 27017:27017 \
  --name mongo \
  --network mongo-network \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=qwerty \
  mongo

Note: Port binding is very important. mongoDB is running inside container and you nodejs app is also running inside the container using same network than set url "mongo" to node app server file .
const MONGO_URL = "mongodb://admin:qwerty@mongo:27017";
When the node js app is host directly using pm2/or in ither network container than set url to "localhost" in node js app server file.
const MONGO_URL = "mongodb://admin:qwerty@localhost:27017";
This port   -p 27017:27017 \ binding is very import if you node app is host in other network container/ host directly via pm2
Note: Not required in within same docker network.

2) Download Mongo Express Images.
Download mongo-express image using docker hub command. This command will download image and run it as a container.
docker run -d \
  --name mongo-express \
  --network mongo-network \
  -p 8081:8081 \
  -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin \
  -e ME_CONFIG_MONGODB_ADMINPASSWORD=qwerty \
  -e ME_CONFIG_MONGODB_URL="mongodb://admin:qwerty@mongo:27017/admin" \
  mongo-express


Note: The port binding with Host is very important while running mongo-express container.
Other wise you can access with your public host your mongo DB. 

Now access your mongo-express using the url
http://<your-server-ip>:8081

Host your Nodejs App
Step 1
Open port 3003
firewall-cmd --permanent --add-port 3003/tcp
firewall-cmd --reload

Step 2 Upload project on server
We have an example nodejs app. we will clone it from the git repository.
git clone https://github.com/shradha-khapra/docker-testapp.git

Step 3 Edit server.js file
Change or update the port to 3003

Step 4 Run the Application using pm2 service manager
pm2 start npm --name "docker_test_backend_app" -- run start







Comments

Popular posts from this blog

Install MariaDB Latest Version 11.4 in Red Hat Version 9

 This this post i will show you step by step the installation process of mariaDB in red hat version 9. Step1 Run the command to pull the latest updated packages on applications installed in your system. -dnf update If you get Kernal update than reboot the system -reboot Step2 Go to official mariaDB site Make mariadb repository in /etc/yum.repos.d Place the configuration in this file # MariaDB 11.4 RedHatEnterpriseLinux repository list - created 2024-09-24 11:12 UTC # https://mariadb.org/download/ [mariadb] name = MariaDB # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. # baseurl = https://rpm.mariadb.org/11.4/rhel/$releasever/$basearch baseurl = https://mirrors.aliyun.com/mariadb/yum/11.4/rhel/$releasever/$basearch # gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 Now install the mariaDB with its dependencies package...

Linux Commands

  Linux Commands 1.  OS-Release -cat /etc/os-release -cat /etc/redhat-release show os //kernal information -uname  show kernal middleware It is intermediator between hardware and software. -uname  -r what is process architect. -uname -p To show all information -uname -a 2.  Date-CAL -date -cal 3.  Booting in Linux (Run-Levels) Shutdown/Close pc -init 0  Single user mode -init 1 Multiple user mode -init 2 Multiple user mode with network plus full support Not use -init 4 Graphical mode init 5 Reboot the system -init 6 4.  Target command in Linux (systemctl) With the help of target we can manage system specific as well as user specific task. Target command is system Control (systemctl). Basically it is utility, which build to replace 'init' command. What systemctl can do ?  We can find its all commands with the help of single command. write systemctl enter twice TAB button. //it will list all its commands. Show current system mode - systemctl...