DevOps Task with Docker & Jenkins

Problem Statement:-
1. Create container image that’s has Jenkins installed using Dockerfile
2. When we launch this image, it should automatically starts Jenkins service in the container.
3. Create a job chain of job 1, job 2, job 3 and job 4 using build pipeline plugin in Jenkins
4. Job1 : Pull the Github repo automatically when some developers push repo to Github.
5. Job 2 : By looking at the code or program file, Jenkins should automatically start the respective language interpreter install image container to deploy code ( e.g. If code is of PHP, then Jenkins should start the container that has PHP already installed ).
6. Job 3 : Test your app if it is working or not.
7. Job 4 : if app is not working , then send email to developer with error messages.
8. Create One extra job job5 for monitor : If container where app is running. fails due to any reason then this job should automatically start the container again.
Solution:-
First we will create a Dockerfile using centos and jenkins.

FROM: The image which is to be used for container.
RUN: Commands to be executed while building the modified container.
We will be installing wget & net-tools commands for downloading jenkins, java and various other repos and then downloading them.
COPY: This Command will be used to copy files from host to image while building it.
CMD: The cmd used here will keep the Jenkins live till the container is on and will start on container boot.
and the mail.py file :

For Building the image we use the following command:-
docker build -t jenkinstask:v1 .
After successfully building the image. We will be able to see this page:-

Now we will run our container as privileged and pat it:-
docker run -it --privileged -p 9999:8080 -v /:/host jenkinstask:v1


Now it’s time to move for the jobs :-
First Job:-



Added the job to newly created build pipeline view.
Now, Job 2 →

As soon as Job 1 completes, it will deploy the php container on the system.
Now, Job 3 →
This Job is for testing purpose.

Now Job 4 →

Finally, the last job: Monitoring Job 5 →


Final view of the Build Pipeline →
