├── Dockerfile
├── Jenkinsfile
├── README.md
├── docker-compose.yml
├── docker-compose_mysql.yml
├── docker-compose_mysql_phpMyAdmin.yml
├── docker-compose_tomcat.yml
├── index.html
├── mysql-dump
└── USER.sql
├── pom.xml
├── src
└── main
│ └── webapp
│ ├── WEB-INF
│ └── web.xml
│ ├── index.jsp
│ ├── logout.jsp
│ ├── register.jsp
│ ├── success.jsp
│ ├── userRegistration.jsp
│ └── welcome.jsp
└── target
├── LoginWebApp-1.war
└── LoginWebApp-1
├── WEB-INF
├── lib
│ ├── mysql-connector-java-5.1.30.jar
│ └── servlet-api-2.5.jar
└── web.xml
├── index.jsp
├── logout.jsp
├── register.jsp
├── success.jsp
├── userRegistration.jsp
└── welcome.jsp
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM tomcat:latest
2 |
3 | LABEL maintainer="Nidhi Gupta"
4 |
5 | ADD ./target/LoginWebApp-1.war /usr/local/tomcat/webapps/
6 |
7 | EXPOSE 8080
8 |
9 | CMD ["catalina.sh", "run"]
10 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | pipeline {
2 | agent any
3 |
4 | tools
5 | {
6 | maven "Maven"
7 | }
8 | stages {
9 | stage('checkout') {
10 | steps {
11 |
12 | git branch: 'master', url: 'https://github.com/devops4solutions/CI-CD-using-Docker.git'
13 |
14 | }
15 | }
16 | stage('Execute Maven') {
17 | steps {
18 |
19 | sh 'mvn package'
20 | }
21 | }
22 |
23 |
24 | stage('Docker Build and Tag') {
25 | steps {
26 |
27 | sh 'docker build -t samplewebapp:latest .'
28 | sh 'docker tag samplewebapp nikhilnidhi/samplewebapp:latest'
29 | //sh 'docker tag samplewebapp nikhilnidhi/samplewebapp:$BUILD_NUMBER'
30 |
31 | }
32 | }
33 |
34 | stage('Publish image to Docker Hub') {
35 |
36 | steps {
37 | withDockerRegistry([ credentialsId: "dockerHub", url: "" ]) {
38 | sh 'docker push nikhilnidhi/samplewebapp:latest'
39 | // sh 'docker push nikhilnidhi/samplewebapp:$BUILD_NUMBER'
40 | }
41 |
42 | }
43 | }
44 |
45 | stage('Run Docker container on Jenkins Agent') {
46 |
47 | steps
48 | {
49 | sh "docker run -d -p 8003:8080 nikhilnidhi/samplewebapp"
50 |
51 | }
52 | }
53 | stage('Run Docker container on remote hosts') {
54 |
55 | steps {
56 | sh "docker -H ssh://jenkins@172.31.28.25 run -d -p 8003:8080 nikhilnidhi/samplewebapp"
57 |
58 | }
59 | }
60 | }
61 | }
62 |
63 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CI-CD-using-Docker
2 | This repository will run a java application in a tomcat container using Jenkins and Docker
3 |
4 |
5 | # Youtube Link
6 |
7 | https://www.youtube.com/watch?v=B1sjiq1wD_Y&feature=youtu.be
8 |
9 | # Blog Link
10 | https://devops4solutions.com/ci-cd-using-jenkins-and-docker-2/
11 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.3'
2 | services:
3 | db:
4 | image: mysql:5.7
5 | volumes:
6 | - db_vol:/var/lib/mysql
7 | - ./mysql-dump:/docker-entrypoint-initdb.d
8 | environment:
9 | MYSQL_ROOT_PASSWORD: root
10 | MYSQL_DATABASE: testdb1
11 | MYSQL_USER: testuser
12 | MYSQL_PASSWORD: root
13 | ports:
14 | - 3306:3306
15 | phpmyadmin:
16 | depends_on:
17 | - db
18 | image: phpmyadmin/phpmyadmin
19 | ports:
20 | - '8081:80'
21 | environment:
22 | PMA_HOST: db
23 | MYSQL_ROOT_PASSWORD: root
24 | web:
25 | build:
26 | context: .
27 | depends_on:
28 | - db
29 | image: tomcat
30 | volumes:
31 | - ./target/LoginWebApp-1.war:/usr/local/tomcat/webapps/LoginWebApp-1.war
32 | ports:
33 | - '8082:8080'
34 | environment:
35 | MYSQL_ROOT_PASSWORD: root
36 | MYSQL_DATABASE: testdb1
37 | MYSQL_USER: testuser
38 | MYSQL_PASSWORD: root
39 | volumes:
40 | db_vol:
41 |
--------------------------------------------------------------------------------
/docker-compose_mysql.yml:
--------------------------------------------------------------------------------
1 | version: '3.3'
2 | services:
3 | db:
4 | image: mysql:5.7
5 | volumes:
6 | - db_data1:/var/lib/mysql
7 | environment:
8 | MYSQL_ROOT_PASSWORD: root
9 | MYSQL_DATABASE: testdb1
10 | MYSQL_USER: testuser
11 | MYSQL_PASSWORD: root
12 | ports:
13 | - 3306:3306
14 | volumes:
15 | db_data1:
16 | name: db_data1
17 |
--------------------------------------------------------------------------------
/docker-compose_mysql_phpMyAdmin.yml:
--------------------------------------------------------------------------------
1 | version: '3.3'
2 | services:
3 | db:
4 | image: mysql:5.7
5 | volumes:
6 | - /opt/test:/var/lib/mysql
7 | environment:
8 | MYSQL_ROOT_PASSWORD: root
9 | MYSQL_DATABASE: testdb1
10 | MYSQL_USER: testuser
11 | MYSQL_PASSWORD: root
12 | ports:
13 | - 3306:3306
14 | phpmyadmin:
15 | depends_on:
16 | - db
17 | image: phpmyadmin/phpmyadmin
18 | ports:
19 | - '8081:80'
20 | environment:
21 | PMA_HOST: db
22 | MYSQL_ROOT_PASSWORD: root
23 |
--------------------------------------------------------------------------------
/docker-compose_tomcat.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | web:
4 | image: tomcat
5 | ports:
6 | - "8081:8080"
7 | volumes:
8 | - ./index.html:/usr/local/tomcat/webapps/test/index.html
9 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 | This is a index page
2 |
--------------------------------------------------------------------------------
/mysql-dump/USER.sql:
--------------------------------------------------------------------------------
1 | -- phpMyAdmin SQL Dump
2 | -- version 5.0.2
3 | -- https://www.phpmyadmin.net/
4 | --
5 | -- Host: db
6 | -- Generation Time: Sep 12, 2020 at 11:53 PM
7 | -- Server version: 5.7.31
8 | -- PHP Version: 7.4.9
9 |
10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
11 | START TRANSACTION;
12 | SET time_zone = "+00:00";
13 |
14 |
15 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
16 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
17 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
18 | /*!40101 SET NAMES utf8mb4 */;
19 |
20 | --
21 | -- Database: `testdb1`
22 | --
23 |
24 | -- --------------------------------------------------------
25 |
26 | --
27 | -- Table structure for table `USER`
28 | --
29 |
30 | CREATE TABLE `USER` (
31 | `first_name` varchar(20) NOT NULL,
32 | `last_name` varchar(20) NOT NULL,
33 | `email` varchar(20) NOT NULL,
34 | `username` varchar(20) NOT NULL,
35 | `password` varchar(20) NOT NULL
36 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
37 | COMMIT;
38 |
39 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
40 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
41 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
42 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |