Jenkins builds Docker images and pushes them to Harbor warehouse

Jenkins builds Docker images and pushes them to Harbor warehouse

The spring boot project uses Jenkins to build a Docker image, push it to the harbor repository, start the container, and then pull the image to the local running container.

Dockerfile

Location: in the root directory, at the same level as src

FROM java:8
 # Author: MAINTAINER zhaoyc
VOLUME /tmp
#ARG JAR_FILE
#Add the jar package to the container and rename it to app.jar
ADD target/*.jar app.jar
RUN bash -c 'touch /app.jar'
ENV TZ=Asia/Shanghai
#RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 81
#CMD ["-jar", "/app.jar"] "nohup" "&"
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

pom.xml

To specify the Maven version number as 1.4.2, other versions have not been tested, otherwise the main-class cannot be found

<plugins>
 <!-- mavn jar package startup plug-in -->
	<plugin>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-maven-plugin</artifactId>
		<version>1.4.2.RELEASE</version>
	</plugin>
</plugins>

Jenkins Configuration

System settings configuration docker – need to install Docker plugin

insert image description here

Create a new Maven project configuration parameter build

insert image description here

Project git repository configuration

insert image description here

mvn build buile configuration

insert image description here

Build the Docker image and push it to the repository configuration

insert image description here

Execute the script after pushing to the repository

#!/bin/bash
#IMAGE=${module_filename}
#TAG=${Tag}
IMAGE=$1
TAG=$2
PULL_IMAGE=192.168.1.100:81/project/${IMAGE}:${TAG}
# Calculate subtraction and output with 0 in front of the decimal point, such as 0.3-0.1=0.2
CURRENT_IAMGE=`echo "$TAG - 0.1" | bc | awk '{printf "%.1f", $0}'`

echo '================Start logging into Harbor warehouse================'
docker login http://192.168.1.100:81 -u admin -p Harbor12345

if [ $? -eq 0 ]; then
    echo '================Login successful================='
else
    echo '================Login failed================='
    return 1
fi

echo '================Start pulling image================'
docker pull ${PULL_IMAGE}
echo '================End of pulling image================'

# Update container operation echo '================Stop running the image================'
docker stop ${IMAGE}_${CURRENT_IAMGE}
echo "wait 10 seconds"
sleep 10

echo '================Start starting mirror================'
#if [ ${IMAGE} == "java-demo" ]; then
# docker run -d --name ${IMAGE}_${TAG} -p 9001:9001 ${PULL_IMAGE}
#elif [ ${IMAGE} == "spring-cloud-eureka-client-demo" ]; then
# docker run -d --name ${IMAGE}_${TAG} -p 9012:9012 ${PULL_IMAGE}
#fi
docker run -d --name ${IMAGE}_${TAG} -p 9001:9001 ${PULL_IMAGE}
if [ $? -eq 0 ]; then
    echo '================Mirroring started successfully================'
else
    echo '================Mirror startup failed================'
    return 1
fi

This is the end of this article about how Jenkins builds Docker images and pushes them to the Harbor repository. For more information about how Jenkins builds Docker images, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • How to use Docker buildx to build multi-platform images and push them to private repositories
  • Use Docker to build a Git image using the clone repository
  • How to use domestic image warehouse for Docker
  • docker-maven-plugin packages the image and uploads it to a private warehouse
  • How to use Docker image repository
  • Alibaba Cloud deployment steps for Docker private image repository
  • Docker container practice image warehouse

<<:  Prometheus monitors MySQL using grafana display

>>:  HTML form application includes the use of check boxes and radio buttons

Recommend

Summary of various methods of implementing article dividing line styles with CSS

This article summarizes various ways to implement...

Native JS to implement breathing carousel

Today I will share with you a breathing carousel ...

Reasons why MySQL cancelled Query Cache

MySQL previously had a query cache, Query Cache. ...

Detailed steps to install Mysql5.7.19 using yum on Centos7

There is no mysql by default in the yum source of...

JavaScript to achieve the idea of ​​​​snake game

The implementation idea of ​​the javascript game ...

The difference between MySQL count(1), count(*), and count(field)

Table of contents 1. First look at COUNT 2. The d...

Vue implements multi-column layout drag

This article shares the specific code of Vue to i...

Detailed explanation of built-in methods of javascript array

Table of contents 1. Array.at() 2. Array.copyWith...

How to introduce Excel table plug-in into Vue

This article shares the specific code of Vue intr...

Mysql join query principle knowledge points

Mysql join query 1. Basic concepts Connect each r...

The process of deploying and running countly-server in docker in win10

I have just come into contact with and become fam...

Vue opens a new window and implements a graphic example of parameter transfer

The function I want to achieve is to open a new w...

Detailed instructions for installing mysql5.7 database under centos7.2

The mysql on the server is installed with version...