# 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
Post a Comment