Dockerize Gradle application using Jenkins
In this challenge we will build and deploy a application using docker and Jenkins
- A Gradle web project structure is given in the gradle webapp directory which is in the path mentioned below.
dev/workspace/sample-project - Initialize the gradle webapp directory as a gradle project and configure the build script to
- generate a war file
- build a docker image named "gradle_image"
- run the docker image on a container named "gradle_container", expose to the port 8001 - Create a Dockerfile to deploy the generated war file in tomcat server
- Initialize git to make gradle webapp directory as your local git repository.
- Launch jenkins and create a declarative pipeline named gradle-build to run and deploy the gradle application.
- Ensure that your Gradle application is running on http://localhost:8001/gradle_webapp
Let's get started...
1. Initialize the Gradle project:
Open the command prompt/terminal in the dev/workspace/sample-project directory.
Run the command gradle init
and select the option 2: application
and then select 1: Java
Now, the Gradle project is initialized in the 'dev/workspace/sample-project directory'
2. Configure the build script:
Open the 'build.gradle' file in the 'dev/workspace/sample-project' directory.
Add the following code to generate a war file:
apply plugin: 'war'
war {
baseName = 'gradle_webapp'
version = '1.0'
}
plugins {
id 'com.spotify.docker' version '1.2.0'
}
docker {
name 'gradle_image'
copySpec.from war
buildArgs(['TOMCAT_VERSION': '9.0.0.M26'])
}
task startContainer(type: DockerRunTask) {
dependsOn buildDocker
containerName 'gradle_container'
imageId project.docker.imageId
ports '8001:8080'
daemonize true
remove true
}
3. Create a Dockerfile:
Create a new file named Dockerfile in the dev/workspace/sample-project directory.
Add the following code to deploy the generated war file in Tomcat server:
FROM tomcat:9.0.0.M26-jre8
COPY build/libs/gradle_webapp-1.0.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
4. Initialize git:
Open the command prompt/terminal in the 'dev/workspace/sample-project directory'
Run the command 'git init'
5. Launch Jenkins and create a declarative pipeline:
Open Jenkins in your browser and login.
Click on "New Item" and enter a name for the pipeline (e.g. "gradle-build").
Select "Pipeline" and click "OK".
In the "Pipeline" section, add the following code:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'gradle clean build'
}
}
stage('Docker Build') {
steps {
sh 'docker build -t gradle_image .'
}
}
stage('Docker Run') {
steps {
sh 'docker run -p 8001:8080 --name gradle_container gradle_image'
}
}
}
post {
always {
sh 'docker stop gradle_container || true && docker rm gradle_container || true'
}
}
}
Ensure that the Gradle application is running on http://localhost:8001/gradle_webapp:
Open your browser and go to http://localhost:8001/gradle_webapp.
If the Gradle application is running successfully, you will see the default Tomcat homepage.
Comments
Post a Comment