-
下载对应的maven
https://hub.docker.com/_/maven/tags?page=&page_size=&ordering=&name=3.5.3-alpine docker pull maven:3.5.3-alpine@sha256:4c4e266aacf8ea6976b52df8467134b9f628cfed347c2f6aaf9e6aff832f7c45
2、下载对应的jdk
https://hub.docker.com/_/openjdk/tags?page=&page_size=&ordering=&name=8u332 docker pull openjdk:8u332@sha256:a113091e38c3fa501056c435e8884dccc999569fa1be2b35be1cdee0502752c6
docker save -o 自定义名称.tar xxxx 下载的镜像
docker load -i 自定义名称.tar
docker tag xxxx:v1 xxxx:xxx:xxxx
3、jenkin打包 docker login 验证【通过jenkin构建的项目构建记录,找到回放】
steps {
withCredentials([usernamePassword(credentialsId: 'harbor-xxx', passwordVariable: 'HPASSWD', usernameVariable: 'HUSER')]) {
sh '''
docker build --build-arg BASE_IMAGE=reg.xxx.com/library/arm64/openjdk:8u332-nc -f xxx/Dockerfile -t reg.xxx.com/dev/xx-arm64:1.0 .
docker login reg.xxx.com -u $HUSER -p $HPASSWD
docker push reg.xxx.com/dev/xx-arm64:1.0
'''
}
}
完整的JenkinFile
pipeline {
agent {
docker {
image 'reg.xxx.com/library/arm64/maven-arm64:3.5.3'
args '-v /root/.m2:/root/.m2 -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/kubectl:/usr/bin/kubectl'
label 'arm64'
}
}
stages {
stage('build') {
steps {
sh 'mvn clean package -U -P ${active_profile}'
}
}
stage('deploy') {
steps {
withCredentials([usernamePassword(credentialsId: 'harbor-xxx', passwordVariable: 'HPASSWD', usernameVariable: 'HUSER')]) {
sh '''
docker build --build-arg BASE_IMAGE=reg.xxx.com/library/arm64/openjdk:8u332-nc -f xxx/Dockerfile -t reg.xxx.com/dev/xx-arm64:1.0 .
docker login reg.xxx.com -u $HUSER -p $HPASSWD
docker push reg.xxx.com/dev/xx-arm64:1.0
'''
}
}
}
}
}
对应的DockerFile
ARG BASE_IMAGE
FROM ${BASE_IMAGE}
ADD target/xxx.jar /opt/xxx.jar
WORKDIR /var/www/app
EXPOSE 7999
#环境变量 JAVA_OPTS DEBUG_OPTS JMX_OPTS SPRING_CONFIG 由k8s传入
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS $DEBUG_OPTS $JMX_OPTS -jar /opt/xxx.jar --spring.config.location=$SPRING_CONFIG" ]