I will continue the article DevOps CI/CD pipeline tutorial part 3. In this tutorial, How to integrating Docker in CI/CD pipeline Jenkins.
Jenkins Host –> Docker Host –> Tomcat on Docker container

Table of Contents
The content is
- Installing Docker on Amazon Linux server
- Integrating Docker with Jenkins
- Deploy a war file on the Docker container using Jenkins.
Installing Docker on Amazon Linux server
Prerequisites
- Amazon Linux EC2 Instance
Installation Docker
[root@Docker_host ~]# yum install docker -y
Check version
[root@Docker_host ~]# docker --version
Start docker services
[root@Docker_host ~]# service docker start
[root@Docker_host ~]# service docker status
Create user admindocker
[root@Docker_host ~]# useradd admindocker
[root@Docker_host ~]# passwd admindocker
Add a user to docker group to manage docker
[root@Docker_host ~]# usermod -aG docker admindocker
Validation
Create a tomcat docker container by pulling a docker image from the public docker registry.
[root@Docker_host ~]# docker run -d --name demo-tomcat-server -p 8090:8080 tomcat:latest
List out running containers
[root@Docker_host ~]# docker ps

Now, we will pull image tomcat from https://hub.docker.com/_/tomcat
You can then go to
http://localhost:8080
in a browser (noting that it will return a 404 since there are no webapps loaded by default).
Log in to a docker container
docker exec -it <container_Name> /bin/bash
Default, tomcat container webapp is empty. you access a browser it will return a 404 page. I will copy the example webapps as below:
[root@Docker_host ~]# docker run -d --name tomcat-container -p 8090:8080 tomcat
f2732ff3f29496513c5489863fcc405f243bd07275021074af2107a74713683e
[root@Docker_host ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2732ff3f294 tomcat "catalina.sh run" 7 seconds ago Up 6 seconds 0.0.0.0:8090->8080/tcp tomcat-container
[root@Docker_host ~]# docker exec -it f2732ff3f294 /bin/bash
root@f2732ff3f294:/usr/local/tomcat# ll
bash: ll: command not found
root@f2732ff3f294:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf lib native-jni-lib webapps work
CONTRIBUTING.md NOTICE RELEASE-NOTES bin include logs temp webapps.dist
root@f2732ff3f294:/usr/local/tomcat# cp -R webapps.dist/* webapps/
Integrating Docker with Jenkins
Login to console Jenkins
Add ” Publish Over SSH ” plugin.

Manage Jenkins
> Configure System
> Publish over SSH

You need to allow Password Authentication of SSH on Docker Host server ( if you use password)
[root@Docker_host ~]# grep PasswordAuthentication /etc/ssh/sshd_config
PasswordAuthentication yes
For example, Jenkins copy artifacts to Docker host
Add post-build action –> Send build artifacts over SSH

Result,

Deploy a war file on the Docker container using Jenkins.
Create Dockerfile to copy the war file to the delivery folder.
Example Dockerfile simple
FROM tomcat:latest
COPY ./HelloWorld.war /usr/local/tomcat/webapps
Jenkins setting copy war to the docker container.

Link Youtube
Thank you for reading DevOpsRoles.com page